We went to Lucila's for New Year's Eve. It was just Kate and Cassie and me plus Lucila and her kids. (Lejna went to a different party.)
Back to work for a few days.
The garbage disposal in the kitchen sink stopped working a few days ago. Kate said that there were jagged metal pieces sticking out, and seeing no reason to cut myself, I took her word at it. Then later on, after I had already starting look at new ones, it turned out that the jagged metal was little bits of shredded aluminum pull tab from a pop can. (Lejna is the only one who pulls those off cans, so we know who to blame.) Kate and I spent a lot of time picking the bits out of the disposal with a pair of needlenose pliers, and now the disposal is fine again.
I worked on installing the outdoor speakers. This is a two-part project: change the wall box inside the house from 1-gang to 2-gang to expose the speaker wires that run outdoors, and mount the speakers on the outside of the house. I spent some time on both parts, but didn't have the right parts or tools to finish either one, although I came up with a list of what I need. I guess it'll have to wait a few days.
The outdoor speakers I ordered arrived. I started preparing to install them.
Kate's friend from college, Ann, stopped by with her husband Kim for a few hours. We went out to lunch with them and then came back to the house for a few hours.
Our microwave quit working yesterday, so in the afternoon we went to buy a new one. This is the fourth microwave we've had in ten years. Two of the broken ones were Panasonic, so I'm putting them on my personal blacklist permanently, and the other one was a Samsung. The new one is a GE; we'll see how it holds up.
There's a real problem, incidentally, with predicting longevity of appliances. All of them have short warranties (you're lucky to get a full year), and no one seems to track how long they last (I couldn't find out anything even from Consumer Reports). Furthermore, the models change all the time, so even if you find out that, say, the Sharp Carousels from around the year 2000 were very reliable, that doesn't mean that the Sharp Carousels at Best Buy are going to be reliable now. So it's all a crapshoot. The best I can do is say that the last two Panasonics we bought didn't last, so that I won't buy a new one.
Kate's parents, and Russ, left for home in the afternoon.
I posted Open vSwitch patches to thread the userspace datapath.
Everyone but Lejna and I went to the Exploratorium in San Francisco. I felt tired and just not up to it. Lejna went shopping with her friends.
For dinner, I made a beef burgundy soup in my clay pot, plus Irish soda bread. All of it got eaten.
We opened presents in the morning. Cassie's coolest present is a (fake) jellyfish aquarium. She also got a new bike.
I received gift cards for Home Depot and Woodcraft. I look forward to making something. I also received an immersion blender for the kitchen. I look forward to making something with that, too.
After opening presents, we had our traditional Christmas breakfast: strawberry crepes.
We picked up Kate's parents and her uncle Russ from the airport in the afternoon.
Christmas Eve. We went to a party at Raquel's house and came home to open one present early.
I felt like I needed some exercise so I biked into work rather than work from home for the day.
Kate and I installed the second Nest thermostat this morning. It was easy. We do need to spackle and paint a small part of the wall.
I installed the receiver and speakers that I borrowed from Justin. It all worked immediately, which made me happy. I am short an HDMI cable, so I ordered one. I also ordered some outdoor speakers.
I had mentioned to Justin that I wanted to get the in-ceiling speakers in our living room working, by buying a receiver, a center speaker, and a subwoofer. He said that he had extras that I could borrow, so I stopped by his house (and got a tour, too, since it's the first time I've been there since the walls have been on) and picked them up.
The second Nest Protect smoke detector arrived and I installed it.
Today was my 9th wedding anniversary. Kate and I went into San Francisco to see Beach Blanket Babylon. It was a fun show, but we expected it to be more up-to-date. A lot of the bits dated back to the 2012 election, whereas I had the idea that it was updated every few months.
RFC 7047 “The Open vSwitch Database Management Protocol” was published yesterday. It is my first RFC. Bruce Davie, my co-author, did all the work of pushing it through the IETF.
I am upset by the unfair treatment of an exchange student we know, one of Lejna's friends. She did something unwise, but that many kids her age (and adults) do almost routinely without serious consequences. Her host dad got wind of it, tore through all of her private stuff, and denounced her to the local AFS rep for it. It should have stopped there, because it's really not a big deal, but it didn't. The local rep passed it up, and it went all the way up the chain to the national office. The national office decided to send her home, with extreme prejudice. It sounds like she'll go home in a few days, without even the opportunity to finish her final exams this week, so she won't get credit for the first semester of the high school year.
The keypad deadbolt I ordered for the side gate arrived. I rekeyed it to match the rest of our locks and installed it.
I posted the details of the cryptographic vulnerability I've been writing about from time to time.
Feeling a little better, I decided to drive to and from work for one day. Going in, about noon, was fine—it took 25 minutes, shorter than a 45-minute bike commute.
Coming home at a normal commute hour was hell. It took 20 minutes to get to 280, 30 minutes along 280, and 20 minutes to get from the exit to my house.
If I ever have to switch to driving every day, I'll have to change my schedule considerably.
I was feeling sick enough today to stay home. I took it easy, alternating working and reading.
I'm feeling a little bit sick. I wanted to go to bed early but I still have work to do, to get some code checked in before some kind of demo tomorrow.
I sent an on-topic email describing a novel security vulnerability to bugtraq over 48 hours ago. It hasn't posted and I haven't gotten back anything like a bounce or a moderation notification. Frustrating.
Worked from home today. Volunteered at Cassie's school for an hour in the morning, helping each of the children make a page for a book with a painted glittery Christmas tree on it.
I worked madly all day to implement port renumbering in Open vSwitch. I ended up with a dozen or so patches, and then I noticed that two of the most complicated ones could be dropped, so I did that. The dropped patches were major cleanups, but not actually necessary for port renumbering, so I'll probably revive them later. I sent out the patches up late at night when I was feeling tired and somewhat sick, so they aren't as polished as I usually like.
It looks like the stationary engineers' strike at Sequoia Hospital is over. Looking around, it seems that it started back at the beginning of October, maybe even earlier. That's a long strike. I never saw any mention of it in the news, which makes me wonder whether it was at all effective.
There was an article in the Chronicle a while back that mentioned that hospital costs in northern California are 30% higher than in southern California, mostly due to less competition. So maybe the hospitals here can afford to pay more anyhow. (However, I don't even know what the strike was about. The signs only said “unfair” and left it at that.)
The Nest Protect smoke detector that I pre-ordered arrived yesterday. I installed it yesterday afternoon, but the whole-house fan on the same circuit stopped working when I did, so I turned off that circuit breaker overnight to be on the safe side.
Today I took another look. After hours of examining various bits that seemed like they could have gone wrong, I discovered that jiggling the wire connectors in the smoke detector's electrical box could sometimes allow the whole-house fan to turn on. I pulled the wire connector for the neutral wire out of the box—it was hard to get at so I had left it alone until then—and found that one wire had almost pulled out of it. There were too many wires for that size connector anyhow, so I replaced it with one the right size, and instantly everything worked.
I'm very happy with the Nest Protect, because it is much less obnoxious than a typical smoke detector. Most importantly, it tells you where it is: when one of the ten or so smoke detectors in the house goes off, half the time you can't figure out where because it echos so much. The Nest Protect, on the other hand, just says “upstairs” (or wherever you tell it to say).
I'm not planning to replace all the smoke detectors in the house with Nest Protect, because it is too expensive. But I've already ordered a second one to replace the other one that seems to go off annoyingly: the one near the kitchen.
The ONF driver competition judging has been delayed again. First October, then November, then December, and now January. I feel sorry for contestants.
The group to which I gave a small amount of initial advice, sponsored by CodeChix, has been notified that they have been disqualified from the final round of judging, but not told why.
I feel uneasy about contests of this kind in any case. My inclination is always that duplication of effort is a waste of effort. A contest essentially ensures a massive duplication of effort.
I've been having productive discussions of SPSS flawed use of cryptography with some GNU maintainers. I think I'll make some kind of decision soon.
A paper on which I am co-author made it into NSDI. It's my first real publication in a few years. I am one of 20 or so co-authors, so I guess it doesn't say much about me personally.
Kate and I were supposed to go out to a cooking class tonight, but it was canceled and she did not feel like going out. I was pretty tired, though, too, so it was something of a relief.
We are in the midst of a real cold snap, for northern California. Daily lows are hovering around freezing. It may last another week.
Goose reappeared from under the back deck first thing in the morning, thankfully.
The wireless phone charger I ordered arrived. I used to laugh at people for wireless chargers. I mean, what's the big deal about plugging in a cable? But I ordered one myself because I plug in my phone for charging in half-darkness when I'm going to bed and often have my glasses off, and it's hard to grope around and find the phone and the tiny little micro-USB port and flip around the cable until I find the right orientation. I guess the wireless charger will be easier.
We spent a busy day buying a Christmas tree and then decorating it and the house. I also managed to get the side gate fitted out for a deadbolt lock, although the actual deadbolt I have is dysfunctional. I plan to buy another Schlage keypad deadbolt lock.
Goose disappeared sometime in early afternoon. I felt tired pretty early in the evening and would have gone to bed, but I stayed up a few extra hours waiting for her to come back.
Traveled back to California.
Day after Thanksgiving. We went into East Lansing to visit the new MSU art museum along Grand River Avenue.
Early prep for Thanksgiving dinner.
Spent most of the day traveling to Michigan for Thanksgiving with the family. The trip was uneventful. I spent most of my first flight talking to a fellow who does consulting for marijuana growers. It was fascinating.
Last workday before leaving on vacation.
I installed the strike into the side gate. The door lever is much easier to open one-handed than the gate latch was. That comes in handy when I'm wheeling my bike along with the other hand.
We went to the Great Dickens Christmas Fair at the Cow Palace. This is reminiscent of a Renaissance Festival but set in Victorian (rather than Elizabethan) England, with a Christmas theme. My favorite part was the 15-minute fencing lesson. I haven't fenced since about 2001, but I could still do it. Either I was actually a better saberist than my opponent, or he was simply “fencing down” a bit.
I bought a door lock installation kit down at Home Depot and managed to get an ordinary Schlage door lever (previously in use inside our house) fit on the side gate. The hardest parts were getting the drilled-out pieces of wood out of the hole saws, and getting the hole saws off the mandrel.
The strike is not yet installed, so that's a task for tomorrow. I guess the chisel skills I've built up over the last year will come in handy. Then I'll do it all again to install a deadbolt lock above the lever.
Lejna's SAT scores came in. They are low enough to rule out Stanford and Dartmouth. We spent a long time in the evening talking through other possibilities.
Kate and Cassie keep sleeping late this week, which is a problem because Cassie's school starts an hour earlier than usual. I had to get Cassie up and out the door in just a few minutes this morning, with her snack packed in her backpack.
Kate and I went to another cooking class at the San Carlos Adult Center tonight. Tonight it was a range of Thanksgiving side dishes. After class, we went out to the Sneakers sports bar downtown with teacher Chef Steve and his wife Lori.
One of my big new sources of stress went away today when Martin walked into my office and said, “I noticed that this change was making Ben nervous. When Ben gets nervous, I get nervous too” and told me that he was fixing the problem.
The other problem seems to be smaller than expected too.
Stress levels declining.
Lots of stress at work today. Two big changes going on. I hope it all turns out well.
I removed the latch from the side gate and reinstalled it about 7 inches lower, so that Cassie can reach it. I also moved the existing handle down about the same amount, and added a handle to the other side of the gate to make it easier to open. I was a little worried beforehand that I would not be able to correctly align the two parts of the latch, but in fact the gate opens and closes more smoothly now than it did before.
We took Lejna bowling in San Mateo, with a bunch of her friends, as her birthday party.
Took Cassie to her friend Joaquin's birthday party, at Rockin' Jump in San Carlos. I did not like this place: it was too loud and full of screaming bouncing children.
Went to my own friend Justin's birthday party in the evening. Much better.
Cassie and I have started watching a new TV show together, the old BBC series All Creatures Great and Small. I remember watching this on PBS when I was a kid.
I took the day off today. I used it to relax and bike around town a bit, and to start catching up on PSPP bug reports.
I've noticed a pattern in the naming of local housing developments: they are named after whatever was there before. The condos that replaced the marina are One Marina Homes. The apartments that replaced the bowling alley are the Lane. The Bay Meadows horse track has been replaced by the Bay Meadows condo complex.
I spent some time this morning trying to figure out why what I thought was an impending Debian freeze didn't seem to have happened, so that I could figure out whether it was a good idea to do another pre-freeze upload of Open vSwitch. I came close to asking a question about it in one of the Debian IRC channels. Then finally I reread the freeze announcement more carefully.
The freeze begins on November 5, 2014. That's right, almost a year from now.
Debian sure does plan ahead.
I passed a coyote along Junipero Serra on my way to work. He was loping along on the edge of the bike lane. There was plenty of traffic but no one else seemed to notice him. I coasted on past a ways and then stopped to take a photograph. He had stopped, too, by that point, not paying attention to me but to the other traffic on the road. Before I could get a good shot, he decided that there was a big enough gap and crossed the road, where he disappeared instantly among brush the same color as him.
Lejna took Cassie out for a special day on the town with her big sister. Kate and I had the opportunity for some time with just the two of us, which was great. Later in the afternoon the four of us met up at the Fox Theater in downtown Redwood City to see Guys & Dolls.
I spent the first half of the day still recovering a bit from feeling sick. By noon, I was OK. I took Cassie to her soccer team's pizza party at 1 pm. I went grocery shopping early in the evening and then I made dinner.
I didn't participate in any more testing today, since none of the controller vendors wanted to do more testing against Open vSwitch. I started feeling sick around lunchtime, so I took the Open vSwitch hardware back to the office and then went back home and slept from about 5 pm until 7 am the next day.
The plugfest today switched from one-on-one testing (one controller with one switch) to topologies that involved a controller and multiple switches from multiple vendors. I am satisfied with how Open vSwitch performed.
The first highlight of the plugfest for me today was one controller with a GUI interface that could play a part in a movie without any changes. Fancy graphics, effects, animations, amusing naming abound. If a switch unexpectedly disconnects from the controller then it is shown erupting in flames.
The Computer History Museum tour in the evening was the other highlight. My favorite was a video of Fredrick P. Brooks, Jr., giving a talk titled “Worst Programming Language Ever,” about JCL. Here's an excerpt:
JCL was designed to have only six verbs. Well it turns out a schedule time language needs a lot more than six verbs. But it was an article of faith we were only going to have six verbs and so we put all the verby things into declarations—the DD cards do all the verby things and parameters.
The language has awkward—possible, but awkward branching. It has no clean iteration, no forced statement. No clean subroutine call. It is not really a very good programming language. In fact, it is the worst programming language.
Now, how did a smart bunch of people get into this mess? This is where the lesson is. We did not see it as a programming language. From the beginning it was seen as a few control cards that would go in front of your deck.
I could rewrite this almost word-for-word to describe OpenFlow and its development. In fact, let's try:
OpenFlow was designed to have as few requests as possible. Well it turns out that a programming language for the network needs lots of requests. But it was an article of faith that we could only have a few and so we put all of the complexity into the commands themselves–flow_mod got a lot of nasty subcommands early on for this reason and later additions inherited that “for historical reasons.”
The language has awkward—possible, but awkward branching. It has no clean iteration. No clean subroutine call. It is not really a very good programming language. In fact, it is the worst programming language.
Now, how did a smart bunch of people get into this mess? This is where the lesson is. We did not see it as a programming language. From the beginning it was seen as a small API that could allow you to direct individual flows to their destinations.
I voted in the morning.
I tested Open vSwitch against two more controllers today. The first one was another test controller. I did not learn much with this one, that is, it did not find very many bugs. The second controller had a lot of trouble setting up, but the problem did not appear to be on the Open vSwitch side.
There was supposed to be a reception or a dinner tonight, according to the schedule, but the schedule was wrong.
Both Lejna and I had flat tires today. I fixed them both.
Coming out of Spirent there was a ridiculous amount of traffic crawling at a snail's pace. I eventually got up to a traffic light that had fallen into “blinking red” mode. After that, traffic was clear all the way to the train station.
First day of the ONF plugfest at Spirent in Sunnyvale. I really didn't know what to expect. I ended up testing OVS, configured for OpenFlow 1.3, against two controllers. I learned a lot from the results against one of the controllers, one that was designed specifically for testing switches. I expect that I'll be sending out a lot of bug fix patches.
I replaced the remaining confusing array of light switches by the back doors by an easier to understand layout, with related switches stacked (including a pair of stacked dimmers). I removed one switch entirely because it was a 3-way for a switch that really didn't need one.
Cassie had soccer in the morning. I took the Halloween decorations down in the afternoon.
About 2 am this morning, I woke up to the sound of jackhammers. I walked downstairs and outside. There was CAUTION tape across the driveway and water running down the gutters in the street. A crew was repairing a large hole. I watched them for a minute and took some photographs. It seems that a water line had broken and that they had just finished repairing it.
In the morning, the CAUTION tape was still across the driveway and wound around our tree. I guess the tree was a convenient anchor point. I cut it off with my pocketknife and stuffed it in our garbage.
I judged the 4th graders' pumpkins at Cassie's school this morning.
I took an Open vSwitch server (just a Supermicro 1U server with 4 1 Gbps Ethernet ports) over to Spirent in the afternoon to prepare for the ONF plugfest next week.
Lejna's front bike wheel got stolen yesterday so I bought a wheel, tire, rim tape, and tubes on the way home, and then assembled it and put it on her bike when I got home.
I went to a Debian meetup in the evening at Tied House in Mountain View. There were probably 30 developers on hand. I exchanged GPG signatures with four or so of them, including one guy named Wookey. That's really his name: he showed me his passport. I'd seen his emails before but never realized that Wookey was anything but a nickname or a handle.
I composed an email to a security expert friend of mine to ask him whether the SPSS use of cryptography was weak enough to warrant issuing a security bulletin. We'll see what he thinks.
I spent a lot of time working on figuring out the function by which SPSS converts a password into an AES key, and how it encodes (not “encrypts” as the documentation says) passwords for use in system files.
We had a bunch of Cassie's friends over for pumpkin carving.
I made some really excellent chili for dinner.
I just spent the last couple of hours looking at sample encrypted data files saved by SPSS. It appears that SPSS encrypts data files using a block cipher in ECB mode. This is an appalling design that no one who knew anything basic about cryptography would have chosen. I don't think anyone should use SPSS password-protected data files to protect any valuable secrets.
I think that it must be startup season. In the last month, I've had three conversations with people working on stealth-stage tech startups. One of them really wanted to interview me, another seemed interested but quickly realize that I'm not vested enough at VMware to be interested, and the third just wanted to talk about mutual interests. All of them are working on interesting projects and I predict some exciting times to come.
For the record, I have no interest in a new job for at least the next few years.
I've been trying to figure out how to work around the lousy T-Mobile coverage at my house. AT&T is one option, but they do not seem to offer any discount, or any way to work around being on a long-term contract, if you bring your own phone (I have a Nexus 4) instead of getting a subsidized phone. I tried Straight Talk, but they just cheated me out of my money. I also considered buying some kind of repeater-ish device that works with T-Mobile, but it requires having a spot where you can consistently get “three bars,” which I don't have in my house. The T-Mobile “Wifi Calling” feature isn't supported on the Nexus 4.
Today I investigated a few VoIP/SIP services. I eventually settled on one that offers a phone number for about $7 per month and paid for one month. I configured the Nexus 4's settings to use the SIP service and tried calling. It worked. Unfortunately there was no echo cancellation whatsoever–it seems that this is a Nexus 4 that Google has failed to fix–and so now I'm continuing to search for a good solution.
I got sucked into an early-morning webex today, only to realize that the Cisco app for Android doesn't actually support audio, not even in a listen-only mode. Come on guys, really?
I volunteered in Cassie's classroom for the third or fourth time this morning. I helped her and her classmates make spider hats. Accordion folds are really challenging for kindergartners.
On Saturday night I picked up Lejna and three of her friends, who are also exchange students, from the Great America amusement park, and dropped them off at home. It reminded me of how exchange students don't know how to give you directions to their houses. It's really strange having a 17- or 18-year-old in the car and having to look up directions on your phone to find their way home.
I mentioned this today at lunch to my coworker Jesse. He related his own story of the time he got lost, on his exchange trip to Moscow, among all the identical hulking Soviet-era apartment blocks. He took a wrong turn into an alley and got attacked by a pack of wild dogs. Now that's a wrong turn!
Everyone was really pleased with the unplanned dinner that I whipped up. We had two pounds of cubed butternut squash. I baked it for half an hour. I added baked apple, honey, butter, and currants to half of it, and divided the rest into small patties, breaded with cornflake crumbs, and fried them like sliders. I served it with dirty rice (from a box).
I asked my friend Olivia, who worked in law school admissions for a few years, whether she knew anything about personal statements. It turns out that she has a side job advising about personal statements.
We went to the football game at Sequoia High School in the evening. I've been to two football games there now. Each time I've been struck by the comparison between the crowd there and the crowd that attended the games at my high school. I think that the crowd in DeWitt was bigger, but Sequoia has four or five times as many students.
I worked from home today because I expected a fellow Debian developer to drop by in the early evening and I wanted to have dinner done before he arrived. However, he had to cancel, so we had way too much pizza for four people. We ended up having Lucila and her kids over for dinner.
The lead singer of Train did a concert at VMware this afternoon. My friend Anett got called up on stage to sing. She was thrilled.
Dear PG&E and Stanford:
Thanks for finally finishing up the roadwork along Junipero Serra. It was frustrating how you originally said the project would take 2 months and then added a month here and there until it took a whole year. Now it's been done for a couple of months, so could you please finally paint some lines on the road in the northbound direction?
Last week a professor teaching with Pintos emailed me about a bug that he had discovered in the semaphore implementation. After I asked for more information, I realized that he was right: the Pintos implementation of semaphores does have a subtle fairness problem. In particular, if thread A increments a semaphore while thread B waits to decrement it, then thread A (or another thread) is allowed to decrement it without waiting, if it tries before B is rescheduled. Hundreds or maybe thousands of students have looked at this very same code before, and this is the first time I remember hearing about this bug.
I noticed something funny happening with the headlights as I turned into the driveway a few days ago. Tonight I figured out exactly what it is: as you start to turn the wheel at low speed, a separate light in addition to the headlights comes on on the side of the car to illuminate the direction you are turning. Useful!
I made shrimp etouffée for dinner. Yum.
It happened a year ago, but this is the first time I've heard of a break-in at Adara Networks. It's also the first time I've heard of Adara Networks, even though the article calls them a Nicira “rival.”
I skipped the second day of the ONF workdays to get some work done.
Kate and Cassie and I ate dinner at Scott's Seafood in Palo Alto. I think it's the second time I've eaten there. Pretty good food.
On my way to Millbrae about dawn, on my bike, a car pulled up beside me at a traffic light and the driver mumbled something at me that included “light.” I looked at my rear blinky, which was functioning. The driver spoke again and I heard it all this time: “No, I mean, look at that sunrise. Behind us.” I looked back again and it was a pretty pink misty sunrise. I think that's about the nicest thing a driver has said to me out a car window.
Today was the first full day of the ONF workday. I found the most interesting part came from a panel discussion with the board during the morning opening session, particularly a discussion of the new Chipmakers Advisory Board (CAB). During this discussion, Nick McKeown said that the CAB was created to change the structure of the ONF organization to give more voice to chipmakers and to encourage the chipmakers to transition “from closed and proprietary and hard to manage” to a more open approach. I found myself skeptical about this, since network switch ASIC makers have an entrenched attitude of secrecy. Even the CAB session during the ONF workdays was held “by invitation only” (no one invited me).
I managed to talk to Nick for a few minutes separately following the opening session and expressed my cynicism. He is much more optimistic. Nick says that one goal was to bring the chipmakers into ONF so that they can be called more to account than they had been before (not at all). It is not entirely secretive: the CAB will issue a public report.
Chipmakers' secretiveness is the issue that most concerns me, but another big issue for OpenFlow and other SDN implementations is that the ASICs are truly application-specific. That is, they are designed to work well for specific networking tasks that their designers envisioned, lacking the flexibility for designers to adapt them to new tasks. On the latter issue, Nick pointed me to a SIGCOMM 2013 paper that demonstrates the feasibility of a more general approach to networking ASIC design.
Following the opening session, I attended the extensibility session. I did not learn anything interesting. At the end, I talked for about five minutes about how we test Open vSwitch.
Another ONF workday has come along. Today was the “pre-meeting” where those already involved in OpenFlow came together to discuss next steps. I only found two aspects of this interesting, both part of a larger discussion of support for tunnels (GRE, VXLAN, MPLS, …) in OpenFlow.
The first was a mention of an implementation of BFD using the OpenFlow “group” concept. This fits the architecture of OpenFlow pretty well because groups already have a concept of “up” and “down” and a way to direct traffic to a group member (a bucket) that is currently up. This might be something we could use and implement in Open vSwitch.
The second was a discussion of how tunnels might be integrated into OpenFlow without requiring adding an OpenFlow port for each tunnel. Open vSwitch already supports one way to do this that requires the operating system to have an IP stack with support for ARP and IP fragmentation and defragmentation. Some of those involved in the discussion were interested in a solution that did not have that requirement, in particular one that would allow (perhaps require) the controller to do the ARP or otherwise resolve the MAC address of the destination. (How to fragmentation and defragmentation was not discussed.)
That's the background, which is not interesting in itself. It was the attitudes of some of the participants that I found surprising. It seems to me that we are now in the third generation of participants in ONF and OpenFlow. The first generation was the experimenters and early researchers and implementers. I count myself among those. We were trying to figure out how OpenFlow could be made to work and the strengths and weaknesses of various design tradeoffs. The second generation was early practitioners, who were there to learn about what the first generation had figured out. The third generation, which seems to be new at these ONF workdays, seems to believe that ideas explored by the first and second generations are a manifesto laid down by God. I don't know how many times I heard that some proposal was “not in the spirit of SDN” or that it would “not be necessary in a real software-defined network.” As one of the early designers and implementers in this space, I don't think I have to believe in any kind of “spirit of SDN” and I certainly don't believe that there is a single way that any network should function, whether it is called an SDN or an “HDN” or just a network. I don't think that anyone else should have to believe in any of this stuff either. It is nonsense.
The afternoon sessions did not particularly interest me so I skipped them.
Came home along Alameda de las Pulgas, as usual, and there was a long traffic backup coming up to the hospital. It turned out that the Stationary Engineers Union picketers, who have been striking there for over a week, were intentionally blocking the road by aimlessly walking back and forth across the crosswalk. They did not get in my way on my bike and, thinking back, it is lucky for me that they did not, because I am sure that I would have been angry and aggressive if anyone had tried to block my path.
I don't know why the picketers think that making drivers mad will help their case with the hospital.
Our new employee came and met the team and ate lunch with us, even though he can't really start work. I hope the government shutdown doesn't continue.
I made a lot of progress on figuring out the format of SPSS ZCOMPRESSED system files (ZSAV) files. I think I can write a reader that will work reliably on all the examples I've seen so far, and there is little left that I don't understand.
Drove to Berkeley to pick Lejna up from a camping trip. Coming across the San Mateo Bridge, an indicator told me that there was low tire pressure. Sure enough, when we stopped at a gas station we found a screw in the right rear tire. We drove to the nearest tire store (a Sears) and they repaired it for us. The mechanic said it was the first 2014 car he'd repaired.
On our way home we visited Adventure Playground, a city park in Berkeley. It is full of fun, dangerous stuff for kids to do. Everything there is made of wood and held together with nails, and kids can check out tools and paint to modify it. It is made slightly safer through a sort of internal economy: to check out a tool or paint, a child must first go around and collect stray nails, or pick up trash, or pick up large wood splinters, or find and remove some dangerous situation like a nail sticking out of a board. Great place. I wish we lived closer.
We came home over the new Bay Bridge. Traffic was backed up for miles by the metering lights (on a Sunday!). On our home we stopped at Windy City Pizza for dinner.
Took Cassie to her soccer game in the morning. Picked up our fired and glazed pottery from last weekend in the afternoon. Worked on the back landscaping.
The government shutdown caused trouble for me two ways today.
First, my team at VMware is hiring. We have a new employee who should start work Monday. However, he cannot get a Social Security card due to the shutdown, so he can't start work until the government starts up again.
Second, I was trying to view the Patricia tree page in the NIST Dictionary of Algorithms and Data Structures, but the entire website has been replaced by pages that say “NIST Closed, NIST and Affiliated Web Sites Not Available.” That's absurd political grandstanding: the whole website is just static pages, and it doesn't cost any more to show the real page than to show the “closed” page.
I spent all day chasing non-bugs. The first of them was a suspected memory leak. I took several core dumps and looked for excessive or growing use of various kinds of heap blocks, using my utility for tracing heap blocks from core dumps, but none was visible. Eventually I found out that the VMs we were using for simulation were sized to be barely large enough, so that the multithreading changes (which increase memory consumption) sometimes made OVS exhaust the entire margin of error.
The other non-bug was suspected high CPU use, but again it seems to be an artifact of virtualization. Using simulated hypervisors to test scale is a good way to reduce need for hardware and thereby save money, but it leads to a lot of wasted effort trying to find problems that aren't really there.
I had a pretty awful initial experience with the new car last night. I got in and backed it out of the driveway, and while turning into the street I realized that the engine must not be running because the power steering hadn't kicked in. I shifted back into park and hit the “start” button a couple of times, but the engine still didn't start. I dug the key fob out of my pocket to try the start button there, but it didn't do anything either. I thought about turning the regular key in the ignition, but in fact there wasn't a regular key or even a hole in the steering column to insert one. I was starting to panic, since the back of the car was hanging out into the street.
I ran into the house and shouted upstairs, “How do you start this car?” Kate shouted back down, “Step on the brake!” I ran back to the car, stepped on the brake, and hit the start button. The engine started.
There had been no hint that I needed to step on the brake. What a stupid system.
My birthday. I am 35.
Our new car was delivered today, which is just a coincidence.
Both Kate and Lejna are sick today. Cassie and I have been spared, so far. I stayed home to help out a bit. I did manage to get a little work done.
Kate woke up feeling sick to her stomach and was out of commission all day.
In the afternoon, Cassie and Lejna and I went to downtown San Carlos and painted pottery pieces at Laurel Street Arts.
I bought a new toilet seat at Home Depot and installed it. This one lowers itself slowly, without slamming.
Had most of the day to myself. Kate took Cassie to soccer practice in the morning, and then in the afternoon all of the girls went into San Francisco.
Kate and I went out with a bunch of my friends to the comedy show at Rooster T. Feathers in the evening as a kind of birthday.
One of the toilet seats in the house broke into two pieces when I let it drop hard against the base. I think it must have developed a small crack over the last few weeks, because I remember feeling pinched a couple of times sitting down on this one recently. I've never known toilet seats to break before.
I've started hearing about “impostor syndrome” recently, specifically about women working in computer science. I can relate, because I had my own experience that fits the casual definition at Wikipedia:
The psychological experience of believing that one's accomplishments came about not through genuine ability, but as a result of having been lucky, having worked harder than others, or having manipulated other people's impressions, has been labeled the impostor phenomenon.
I came to Stanford in 2001 as a new PhD student not having had any real experiences with other programmers or computer scientists. My only academic experience in computer science was one grad-level college class, in which I had mostly kept quiet since I figured that I was only an undergrad. (The class wasn't even what I expected. I hadn't read beyond the title “Pattern Recognition” in the course catalog, which meant that I assumed it was about regular expressions when in fact it was AI for pattern recognition.) I had definitely written a lot of code, some of it on projects with other programmers, but always over the Internet. I had never met anyone I had worked with on these projects. The result was that I really didn't have any idea how my knowledge or skill compared against typical students or programmers.
My incoming class at Stanford had dozens of new PhD students, among nearly 200 PhD students total in the department. I guess that almost all of them had more formal education in computer science than me. (Perhaps they still do, since I've only ever taken two real CS lecture courses.) Most of them were from schools more prestigious than Michigan State University. It didn't help at all when one of the faculty on the admissions committee remarked that, “We figured that we had to take someone from MSU someday and you seemed like a good candidate,” although he said it jokingly.
To summarize, Stanford was intimidating. I spent a lot of my first quarter there wondering whether I was really in the right place and, if not, whether I could fake it long enough to catch up before they caught wind of it. I'm usually more comfortable listening than talking, and in that situation I found myself talking even less. I did ask a few questions like, “How many students don't actually graduate?” The answers were reassuring: as it turned out, most of the students who dropped out did so to found startups.
I don't remember exactly how long it took me to realize that I actually fit in. Over time, listening helped me to figure out that my understanding was as good as the other students' in important ways. The mid-quarter “comprehensive exams” helped too. To graduate, it was necessary to pass 8 out of 12 of the exams. I took six of them the first year and passed all six, a better outcome than most of my class that year.
Anyway, my take on this whole subject is: don't let your self-doubt stop you.
I forgot to mention on Monday that I released version 0.8.1 of GNU PSPP. That's only about 2 months between releases, which is much better than before: the time between the two previous releases was multiple years. I hope to keep up the frequency from now on.
I've never been good with tying knots or understanding them. Off and on over the past couple of years, I've spent some time with little bits of rope and books and websites, trying to catch up on remedial knot-tying skills. The definitive reference that all of these sources talk about is “ABOK,” the Ashley Book of Knots, which is supposed to describe over 3000 knots with over 7000 illustrations. I finally ordered a copy tonight. We'll see whether I can actually follow it.
I spent most of the day trying to track down what manifested as a performance regression in Open vSwitch, then, miraculously and out of the blue, YAMAMOTO Takashi reported the exact cause of the problem, saving me tons of time and trouble.
We spent all day with our friends at a park in Santa Clara.
Went to Cassie's soccer game. It was pouring rain the whole time, but the kids were happy with it anyway.
Took Cassie and her friends Stella and Julia to Chuck E. Cheese in the afternoon.
Had Simon Horman (an Open vSwitch contributor), my coworker Ethan, and my friend Olof to dinner. We sat outside talking until late.
In the evening we went to “Back to School Night” at Lejna's high school in Redwood City. We spent 10 minutes in each of her classrooms, learning about the class from her teacher. I had never been in the high school before, and now I understand why Lejna says it is such a big place. Most of the time it took us more than 5 minutes to make it from one class to the next. I guess she must have to run sometimes.
I took the day off from work since it's a slightly slack time following a couple of stressful weeks.
I went to Woodcraft and bought some wood stain to match my new office furniture. Some finish had rubbed off the desk on the side facing the office door. I sanded and restained the affected parts. It did the job well enough to keep from drawing attention to the imperfections. If you stare at the finish, you can see that it is flawed, but it is no longer obvious.
I took a test drive of a Ford Escape at the dealer in Redwood City. I was happy with how it drove.
I bought a lot of different kinds of cheese to use for raclette on Friday.
I mailed hackathon stickers to the non-locals who gave me mailing addresses.
I should take a day off more often. I got tons of stuff done.
I took Cassie to school in the morning and then on an impulse volunteered to help out in class for an hour a little later in the morning. I spent the time walking around the class helping keep the kindergartners on task coloring and assembling a “Goldilocks and the Three Bears” worksheet.
My new shoes feel heavy on the way to and from work.
Late in the morning, Lejna went with me over to our friend Rachel's house to pick up some office furniture that she no longer had room for: a desk, a bookshelf, and a couple of smaller pieces. All of these are things that I already had, but these were much nicer than mine, and it seemed worth upgrading.
Getting it home was more difficult than I'd bargained for. Rachel also had a truck to lend, but this stuff was heavy. It took Rachel, me, Lejna, and Rachel's neighbor on the Woodside high school football team to load the bookshelf and the desk into the truck. Rachel had to leave, so she handed me the keys to the truck. I was a little surprised by that, but I managed to drive two loads back and forth in the truck and then a final load in my own car.
Getting the first load into the house and then into the office was tough. We had to turn the desk a couple of times to get it through tight places, and then I had to remove the hinges from the office door to get a little extra width. Eventually we managed to get it all in. The other pieces were easier because they were lighter or could be partially disassembled.
I went to my friend's birthday party later. Kate and Cassie were feeling sick so I went by myself. I was surprised to find out that I was the only guest. It was nice, though, they had a Swedish princess cake and coffee and whiskey, plus a bottle of Zaya rum that I brought as a gift.
I made homemade cinnamon rolls.
We were supposed to go to a friend's birthday party, but he was having a really bad day and canceled it. I guess we'll go tomorrow instead.
I bought a new pair of shoes and threw out the old ones, which had holes in the soles and the uppers. The last ones were $25 shoes, the new ones are $100 shoes. I wonder whether the new ones will hold up better. I am hell on shoes. I wear the same shoes every day and it's a rare pair that can last a year without falling to pieces.
On the way in to work I passed a gasoline can that had dropped in the middle of the road just before Atherton Ave and spilled. I planned to call it in to the police, but a minute later a fire engine with lights and sirens on passed me in that direction. I guess they already knew.
I took Cassie to the football game at Sequoia High School in the evening. Lejna was already there with her friends, and Cassie spent most of her time there together with her. I managed to explain a few of the rules to Cassie in the few minutes she sat next to me. It brought back a lot of good memories from high school for me. No one was actually watching the game; I had forgotten that part. Cassie and Lejna both wanted to leave during halftime, so even though I wanted to stay we left.
Lejna and I watched My Cousin Vinnie when we got home.
I finally pushed the threaded learning patches, and backported them to 2.0.
Meetings, code review, etc.
I am done with the threaded learning patches. I posted them. Going to bed now.
I am exhausted. I am also almost done with the threaded learning patches. I want nothing more than to be done with the threaded learning patches.
Went to a birthday party for one of Cassie's friends.
On the second day of the hackathon, a number of Open vSwitch patches had been submitted overnight. I reviewed and committed them and then went back to working on threading the “learn” action.
In the afternoon I had to leave the hackathon early to get home for a prior commitment. Jarno, one of the team members, did a presentation of our work.
Today was day 1 (of 2) of the Open vSwitch hackathon. I gathered in the VMware gym with the other VMware employees team members, and the members of the other VMware hackathon teams. My biggest impression of the event was that it was remarkably quiet. When a hundred people gather in one place to work together, one normally expects noise. But the event was much closer to a library than a meeting in volume.
In the evening one of the security guards asked me, “So are all you guys here programming super-geniuses?” I said that no, that wasn't the case, although VMware usually hires good people. Then I got to thinking about what distinguishes the people at the hackathon, or what they are doing, from other VMware employees. After a minute, it occurred to me that the difference was that everyone was there because they had an idea of their own that they wanted to pursue. It wasn't because a manager or an executive had told them to do it, instead the projects at the hackathon were ones that they came up with themselves and decided that it was worth two days of time to develop. The ideas weren't even filtered or selected, they were just the first 24 projects submitted to the hackathon (only about 24 tables would fit in the gym).
I went back and told the security guard that, and he seemed to think that was a good answer.
I've been working on better threading the core of Open vSwitch. I need to get this done before we can release Open vSwitch 2.0, because we've found that there is an unacceptable regression in the implementation of the Nicira extension “learn” action. Before we introduced threading, any given “learn” action took effect in the flow table before the next incoming flow was set up. This meant that if a packet came in, used “learn” to set up a flow to handle replies, and then a reply came in, the reply would always hit the flow set up by the “learn” action. With the current threading implementation, though, the effects of “learn” actions happen asynchronously via a queue, which means that the reply can arrive before the flow to handle it is set up.
I hope to get this done early next week.
The response for the Open vSwitch hackathon has been amazing. All of the tasks on the list that I made up last week are either claimed or have interest expressed in them. I had to come up with another task, in fact, one that I had overlooked before, and it sounds like I may have to come up with one more.
The hackathon itself is officially this Friday and Saturday, and I've already received some code for it.
Last night we ate dinner with J.-P., my family's exchange student from Switzerland back 20 years ago, and his wife. He's a big guy, beefier than I remember. It was a great time, I wish that we could do this more than once in 20 years.
I finally applied support for OpenFlow 1.1+ groups to Open vSwitch. This has been the most collaborative commit I've seen, with significant contributions from four different people.
Kate and Cassie went to Kids LegoFest in San Jose this morning while Lejna and I went to the Tech Museum.
We visited one of Cassie's new kindergarten classmates at her house in our neighborhood in the afternoon, and went for a swim in her family's pool. In the evening we had dinner with some friends at Karakade, a Thai restaurant in Redwood City. This restaurant was only a few blocks from our last house. It has great curries.
Lejna went with us to dinner at Lucila's house for the first time tonight.
Saw an odd thing as I was leaving VMware today. A vanload of tourists were standing around the big VMware sign at the entrance to campus, gawking and taking pictures. I hear that's common over at Facebook, but I've never seen it at VMware.
Making a task list for the Open vSwitch hackathon tonight, I was really struck by how close OVS is to OpenFlow 1.1, 1.2, and 1.3 compliance. If my task list is right then we have a real shot at finishing up during the hackathon itself or soon after.
Kate and I walked Cassie to her first day of kindergarten this morning. There was a breakfast for parents afterward sponsored by the PTA. I signed up to help with a couple of events.
Then I walked down to the Caltrain station to go into San Francisco for VMworld. I spent a couple of hours wandering around, looking at vendor booths. I only ran into one person I knew. After lunch I found some space to sit and work on some code.
At 3pm I had a prearranged discussion about SDN and network virtualization with a fellow from a London bank. I'm not sure what his angle was. He didn't seem to be recruiting. Perhaps he is scouting for investment opportunities, or just trying to understand the new state of the industry.
There was another event for parents held in the evening, so I came home for that. I gave my VMworld ticket to Lejna so she could use it for the Imagine Dragons and Trains concerts at AT&T Park.
According to the newspaper, oil extraction in California might not require fracking. Instead, perhaps we can do it by injecting powerful acid into the ground.
This is better?
I listened to the VMworld keynote this morning from the VMware cafeteria in Palo Alto. I watched only to see Martin's segment. He did a good job but I was surprised that the well-produced video of which we'd seen a preview last week was not included. Later I found that video on the main page for nicira.com.
We went to an ice cream social at Cassie's school in the evening.
We went to a Giants game in San Francisco in the afternoon. I was prepared for cold, because it's usually cold in San Francisco, but it was actually hot. I got sunburned.
I got out the big ladder and finished painting the last two outside lamps.
Before this week, the ability to read the structure of the heap from a glibc core dump was questionably possible. Somehow, it has now become an essential skill. I must have done it half a dozen times already to confirm or dispel the idea that a particular bug is a memory leak.
I miss you too.
I miss you already.
Ever wonder whether you're starting to lose your edge? Lately I've been feeling that way, but tonight the feeling is gone. It's been driven away by a victory over a bug.
It started last Friday when Nicira support filed a report of a memory leak in the internal cloud. The cloud was running a month-old Open vSwitch build and I didn't see much point in debugging such an old build, so I said so. I did log in and captured a (5 GB!) core dump with
gcore and copied it to my workstation.
This morning I went back in to see that the head of support had decided that this was a release blocker. The bug had therefore been elevated from “normal” to “drop everything and fix” priority. I thought this was somewhat obnoxious—the memory leak should have been noticed before the build had been running for a month and release was imminent—but it's a genuine bug and so I decided to do my best to fix it.
But how could I do it? The machine in question had been rebooted (the OOM killer had killed ovs-vswitchd overnight) and all the evidence had disappeared except my core dump. And what do you do with that? After a minute of thought, I decided that it might be possible to find the in-use heap blocks and their sizes. Looking at the most common sizes and their content, I might then be able to infer what was allocating and failing to take responsibility for freeing them. (If worst came to worst, I might be able to write a “pour paint through the heap” garbage collector.)
I spent a few minutes looking for an existing tool to do what I wanted, but I didn't find one.
I wasn't sure how the heap was structured, so I spent a few hours looking at libc source and experimenting. The structure turned out to be very simple, in fact. The glibc implementation of
malloc has a two-word header on every block. The first word was not interesting for my purposes, so I ignored it. The second word is the rounded-up size of the following block (including the two-word header) with the low bits used for flags. The least-significant bit, if set, means that the previous (!) block is in use, and if clear means that the previous block is free.
I wrote a Perl program to analyze this structure in a core dump and print a table listing block size and the number of in-use blocks of that size, along with the starting file offset of a random block of each size. I hex-dumped a few blocks of the most common sizes. There was an obvious pattern, but it still took me a long time to spot exactly what was in the blocks. They were full of the Netlink-based “actions” that Open vSwitch userspace uses to tell the kernel what to do with received packets. Once I knew that, it took about five minutes to find the problem in the source code. It took longer to write the commit message.
It's possible to get a lot more out of a core dump than I generally do. (Usually I have more time and opportunity to experiment.)
There is a lot of useful information in glibc's
It might be a good idea to try some
mallocthat has a built-in heap profiler.
I've had the funniest private email exchange with an Ubuntu hacker. He started out by reporting that Debian lacked an Autoconf patch that was in Debian, and pointing me to it. I said that the patch said what it did but not why, and asked why. He said he couldn't figure why either, so I said that I was reluctant to apply it. I thought that was the end of the discussion, but today he came back and said that Ubuntu didn't need it either and implied that they would drop it.
Anyway, to me the moral is how effective it can be to be just a little inquisitive and pushy.
We went to see our friends Grace and Roberto and little Ro-ro in the afternoon.
Lejna and Cassie and I biked over to a nearby garage sale. I bought an underseat bag for Lejna's bike, to keep a spare tube and pump and tools.
In the morning I showed Lejna a couple of reasonable bike routes to school.
The worst of the multithreading bugs seem to have been fixed now. I'm feeling much more positive than I was a day ago. We asked QA to start another test run with a new build.
A crazy difficult day at work. Bugs are flooding in related to the multithreading implementation in Open vSwitch, and I'm the only one really fielding them because Ethan is in Hong Kong and Justin is moving to a new house.
The fire alarms went off in the middle of the afternoon, too, and everyone had to stand out in the grass for a few minutes while the Palo Alto Fire Department walked through the building. No one knew what set off the alarms.
We had Lucila and her family to dinner, which was good because Kate made way too much of it.
I found out that I got a Wednesday ticket to VMworld in the VMware employee lottery. Anyone who will be there and wants to talk, let me know. I'll only be able to be there in the middle of the day, maybe from 10 am to 4 pm.
The four of us played Sequence for Kids after dinner. This game uses a board gridded in squares with an animal in each square. In the official rules, players take turns drawing a card with an animal on it from a deck and placing a chip on a matching animal on the board. Each animal on the board appears in two different squares, which gives the first player to draw a given animal two choices. The first player with four of his own chips in a row wins.
We invented better ways to play. I suggested giving each player a hand of 5 cards, which allows the player more strategy. Then Kate came up with a “speed” version where one person draws cards and calls them out and the others try to slap their chips down on those animals as fast as possible.
Finally I got tired of losing (I am not very quick) so I started flicking my chips at Kate. She threw hers back at me and we all had a chip fight. It was great fun.
I thought of an interesting design idea for another stool: put a seat on both ends so that there is no clear top or bottom. You could flip it over and sit on either end. Hmm.
I finished the second version of my stool made from recovered wood. This time, I added reinforcing rails from post to post across the edge joint on the seat. It seems to be strong enough.
This time I came up with a better way to made an edge joint with dowels. Before, I spent a long time carefully measuring and remeasuring, drilling pilot holes, and so on. This time, I instead took a thin (half-inch) piece of wood the same thickness and width as the two pieces I was joining. drilling a number of holes across it, and then drilled through those holes into the boards on either side. (To make it obvious that I wasn't changing the orientation of any of the pieces during this process, I used a pencil to draw a pair of diagonal lines across all three pieces at the beginning.) This simple, disposable (scrap wood) jig made it easy to make sure that the holes were positioned exactly across from each other.
Lejna asked for oatmeal for breakfast. She hadn't ever had it and wanted to try it.
Lejna made us Bosnian coffee on the stove in a beautiful copper pot that she brought us from Bosnia. It is like Turkish coffee.
We drove to the beach in Half Moon Bay in the afternoon. Walking along the beach, we saw dolphins jumping in the water just a few years off-shore. We watched them for ten minutes or so. It is the only time I have seen dolphins at the beach.
We finally got to pick up our exchange student, Lejna, in Burlingame just after 4 pm. It's been tough waiting the last few weeks. We took her home and showed her around the house and the yard and let her settle in a little. I made a Thai curry with eggplant, chicken, and beef for dinner, which she seemed to like.
I'm really impressed with Lejna's English. When my family had exchange students when I was a kid, their English was good by the end of the year, but pretty skeletal at the beginning. Lejna's is already very good.
We ate dinner out at Spasso downtown. I don't remember eating there before. The food was OK, but not worth the price.
We went to dinner at Lucila's house.
Several months ago, Palo Alto dug up a part of the bike lane along Hillview just above Foothill. They left the project unfinished and put up a sign “CYCLISTS USE EXTREME CAUTION.” From then until now, they did no further work to fix the problem. But this week I noticed a change: they put up a second sign with the same message as the first. I look forward to the third and the fourth sign.
I announced the Open vSwitch Virtual Hackathon for September 6 and 7. Please join if you have interest in seeing OpenFlow 1.1+ support in Open vSwitch.
Kate and Cassie arrived back from Oregon.
I went to a private piano concert at a fantastic house in Palo Alto in the evening with a friend.
Kate decided in the morning that she wanted to make a last-minute, last-chance trip to Portland for the weekend to see her parents. She booked flights and I took them both to the airport in the afternoon.
The employee stock purchase plan shares turned over today and I did a same-day sale of my shares to get the 15% profit, then I looked over my other vested shares. I decided to sell a few of them to see how the process works, since I've never done it before, so I clicked through and got a message (paraphrasing) “Are you sure you want to sell that much? That could affect the market price. Call us at [number] to talk to someone if you're not sure.” It briefly made me feel important, but upon later reflection I think it must just be wrong. No stock sale of mine is really going to move the share price of a multibillion dollar corporation.
OVSDB and OpenFlow now have TCP port numbers officially assigned by IANA. This is a milestone for me. It is the first time that protocols I have had a hand in designing have had official port numbers. It is too bad that their official port numbers are not the ones that we have been using, but that couldn't be helped because those numbers were already taken.
Today was totally screwed up at work. The company scheduled a barbecue lunch for all employees, but for 1:30 in the afternoon. “Sure,” I figured at 11:30, along with the rest of my group, “I'll just go get a light lunch and then have some barbecue late.” But the cafeteria was completely closed. So we had to just be hungry until the barbecue, along with everyone else. And of course there was a huge rush and long lines at that point. And the food wasn't that great.
I think for the next company lunch I'll just work from home that day.
I got some unsolicited positive feedback on the virtual Open vSwitch hackathon idea, even though I've only mentioned it here and face-to-face. I think it's a go.
We went to the exchange student host family orientation. Most of the families there had teenage children. I guess that it is unusual for a family with a small child to host an exchange student. A number of people there complimented us on it.
One topic there was social media. It is harder for people to learn to fit into a new language and culture when they are still engaged in their old language and culture, so the exchange group naturally encourages hosted students to minimize use of social media with their family and friends back home. They provide a sample social media “contract” that they suggest families should ask their students to sign. I found this idea a little strange, although it does have a helpful goal, but one particular item in the “contract” seemed particularly odd to me. It was roughly like this:
I will not defame or criticize others via social media.
I agree that defaming people is unwarranted, but criticizing? Criticism is an important part of life. If we cannot criticize others, it turns life into one big Like or +1 button, where we can only praise, never find fault. I would never categorically tell a person that he (or she) was not allowed to criticize others, nor could I conscientiously ask anyone to sign such a document.
I made a ginger eggplant dish for dinner. Adding chopped fresh tomatoes and scallions from our garden, plus zucchini that we had from the store, and substituting fresh ginger for ground, I neatly used up all our fresh vegetables. There was still some fresh ginger, so I minced it with garlic, mixed with melted butter, put it on homemade bread, and called it “ginger garlic” bread. It seemed like a long shot but turned out delicious.
Today's woodworking project did not go so well. I built a stool out of wood that I had recovered from an old gate, using hand tools only (except for a power drill) and just wood dowels and glue as fasteners. Unfortunately, the seat, which I made from two boards joined at the edge with dowels, broke in two when I sat on it extra hard as a test. It did not break at the joint, so I still consider my joints a success. Tomorrow I may make another seat. I am not sure whether to better reinforce my reclaimed wood, or to cut a section of plywood. Plywood would definitely be strong enough, but it would be somewhat like admitting defeat, which I don't like to do.
We went out to dinner at Kabul, a local Afghan restaurant, with some of Kate's friends, a family that she knows from Tiny Treks. I ordered two dishes with eggplant to get some other ideas.
We went to the farmer's market. I bought an eggplant, as a sort of a cooking challenge.
Kate and I went to a cooking class at the San Carlos Adult Center. Tonight's food: Moroccan. It included two eggplant dishes. This is the second cooking class that has involved eggplant (the Greek class did also). I've hardly ever eaten eggplant, and never cooked with it myself, so I'm getting some ideas.
Another idea for the hackathon: invite developers outside VMware to join in and contribute code at the same time as a kind of extended “virtual hackathon.” I guess I could give out small prizes (maybe lunch at the VMware cafeteria? it's a good one).
I think I've come up with a good idea for the VMware internal hackathon: use it to finish up Open vSwitch support for OpenFlow 1.1 and later.
I released PSPP 0.8.0. The previous release, 0.6.2, was in 2009. I am planning to make releases more frequently from now on.
I built a sawhorse that folds flat using the rectangular frames from yesterday.
I built two rectangular frames using mortise and tenon joints for a woodworking project.
I posted 23 Open vSwitch patches that represent everything I currently have for making the base libraries thread safe. I expect Ethan to post patches to actually thread Open vSwitch next week.
Second and final day of the VMware academic research symposium. My main impressions are from John Ousterhout's talk about data centers. In his opinion, data centers have two attractive features: high scale and low latency, and until now the latter has not properly implemented. According to John, typical latency between servers in a data center ranges from a typical 300 us up to a worst-case of 30 ms. He showed how, with hardware and software changes, one can reduce this to 5 to 10 us, and explained some ways that this is useful.
I met John Ousterhout at lunch today, at a VMware internal research conference. He's famous, of course, and I have a few indirect ties to him because he was Mendel's advisor and because his daughter interned at Nicira. So I was pretty surprised that when he saw my nametag, he said, “You're Ben Pfaff. The Ben Pfaff?” It turned out that he knew me by reputation through Pintos, which he uses to teach the Stanford operating system course.
I've been reading an online copy of the IBM PC Technical Reference Manual, presumably from 1980. I'm really amazed with the level of detail. Some of the tables in the manual (such as the table of keyboard scan codes) seem strangely familiar, as if other books I read earlier contained photocopies of them.
The manual has a few pages on an intriguing expansion card for prototyping. It had hundreds of holes in it for mounting components, plus some circuitry for interfacing to the power supply. In all my reading about PCs, I've never heard of this card before.
Now I've started reading through the BIOS source code. My main impression so far is how simple it all is. There really isn't too much for the BIOS to do. It appears that booting takes a while to start only because the BIOS does a lot of waiting. For example, there is a one-second delay just to check for spurious interrupts.
Meetings! I've had too many meetings lately that have one particular loud-mouthed guy who interrupts me (and everyone else) and knows just enough to make disparaging but incorrect comments. There is actually very little of this issue at Nicira or VMware, but this guy is a problem. I wish he'd shut his mouth.
Today's Rhymes with Orange is really funny given that my wife's maiden name is Waffle.
Cassie got to go to an early screening of Turbo with her friend Stella this morning.
I bought a two-grit knife sharpening block and sharpened all of our kitchen knives. They needed it, because none of them had been sharpened since we bought them years ago.
I painted our house number on the curb.
We went to a concert in Rinconada Park in Palo Alto in the evening.
The last known release-critical bugs before the PSPP 0.8 release have now been fixed, although a little code auditing is still needed. I think we'll probably put out a pre-release soon.
OpenFlow 1.4 is under review now internally in the ONF, but you can already view what is likely to be its openflow.h at http://benpfaff.org/ofh.
I finished building and upholstering the bench. It's functional and looks great, as long as you don't really scrutinize it for paint defects. Looking back, I've been working on this project since the beginning of March, which is about four and a half months. I've picked out another project already, but I hope it won't take as long.
Kate picked up my upholstery foam from the House of Foam and I worked on upholstering the top of the bench.
I received a question from an instructor using Pintos about plagiarism and how we dealt with it. I spent some time drafting my reply. Here is what I said.
First, we kept changing Pintos from one quarter to the next, because we noticed bugs and potential for improvement. Even small changes make it more difficult to reuse older code. Any change will show up in a “diff” (see below).
Second, we read the submitted code. I participated in grading each quarter. I always did a big part of this by reading the “diff” between the tarball that we gave out and the tarball submitted by the students. If there were duplicate submissions, I would have noticed. Duplicate submissions of previous quarters' code would have been obvious, because the diff would show changes in pieces of code (and non-code) not ordinarily modified by student groups, such as the “tests” directory.
In quarters before I started working on the Stanford operating system course, the course staff interviewed each project group face to face. I am told that only a few questions made it really clear who had done the work. I think that this was discontinued because it took too much time (and probably a lot of extra coordination).
I bought a low-end Japanese-style pull saw at Home Depot and practiced making tenons with it. My cuts in the end grain tend to veer inward, so that the tenon is bigger at the end than where it meets the rest of the piece of wood. More practice needed.
We flew back home. A plane from Korea crashed in San Francisco while we were on a connecting flight from Lansing to Detroit, which delayed our flight to San Francisco by about 4 1/2 hours. We finally got home about midnight.
We went to a Lugnuts game in Lansing in the evening with my sister and her husband and some family friends. The Lugnuts lost pretty badly, although they scored a home run in the ninth inning that made it more interesting. Fireworks followed the game, otherwise we probably would have left early. I bought a Lugnuts T-shirt.
In the morning we drove out to the MSU Extension cherry research farm just outside Traverse City. We went on a tour and sampled lots of cherry products.
In the afternoon we drove back to DeWitt.
We drove out to the Sleeping Bear Dunes. Cassie and I climbed most of the way up the dune, although I had to carry her for the last part.
We spent the afternoon at the National Cherry Festival in Traverse City. It is like any local festival, but bigger than most. I guess the “National” part of the name comes from the number of cherries grown in Michigan.
We drove to Traverse City with my parents and checked in at Great Wolf Lodge, a large kid-oriented resort hotel. We spent late afternoon playing with Cassie in the water park built into the hotel, sliding down long waterslides, floating around on inner tubes, and dumping buckets of water on each other.
We visited a family friend who is currently in rehab following a heart attack.
My parents made pancakes with strawberries for breakfast. My sister and her husband came to dinner at our parents' house.
Cassie, Kate, and I flew to Michigan and my parents picked us up at the Lansing airport.
The Devil's Canyon brewery recently moved a little closer to my house in San Carlos. Tonight was their first “Beer Friday” at their new location, so we went with some of our friends because Kate and I remembered enjoying going back before children.
It was hot, crowded, loud, and the lines were too long.
I don't think I'll go back.
It is too hot here.
Prop 8 was defeated. DOMA was struck down. A good day.
It's too bad that Prop 8 was defeated for the wrong reasons. This will not turn out for the best in the long run.
There has been a discussion thread on the pspp-users mailing list about support for SPSS Production Job (.spj) files. I spent a few minutes writing up a little bit about the .spj file I was able to get from a user. I'm not sure whether I'm going to implement .spj support, but it doesn't look too hard.
Today it was cold and rainy. Tomorrow it will be warm and rainy. Any rain at all is unusual in Northern California in June.
We had our second annual “Grill-Off, Bake-Off” party at home today. The idea behind this party is that guests bring items to grill (usually entrees) or to bake (usually desserts). At the end everyone votes on which were the best. The winners get token prizes.
After the party, Cassie and I went to Burton Park by ourselves for a few hours.
I spent some downtime today working more on chiseling mortises. It is not working out well: the wood keeps splitting. I am not sure whether it is the technique, the chisel, or the wood. Some of the wood is clearly not good (it is from a gate that I tore apart), but some of it is OK. The chisel is not a mortising chisel, but I don't think that is critical. The technique is suspect, since I'm a novice. But the splitting happens very early, sometimes when I've barely outlined the edge of the mortise, perhaps 1/32 inch down. I think I really need to get some wood like what I'm planning to use for my next project and use scraps of that for test pieces, instead of random scraps.
We spent most of the day preparing for the party that we're throwing tomorrow, by shopping and making dolmas and pies.
I spent some time experimenting with a chisel in the garage, trying to teach myself how to make square holes for mortise-and-tenon joints.
Cassie's friend Sam (Samantha) from our old neighborhood visited, and Cassie and Sam had a great time together.
Cassie and I did some woodworking together in the evening. I like to let her pick out some project that interests her, and then we work on it together. Tonight, she wanted to make a boat, so she picked out a piece of scrap wood that she thought looked like a boat, and then she put in an “oar” (a little piece of dowel) and then she painted it.
I took off work to go to Cassie's preschool graduation this morning. All of the kids at the preschool put on a good show. We took video of it to show the grandparents.
I had planned to go to work after the graduation ceremony, but I decided spontaneously to take off the afternoon too and go with Cassie and some of her friends to see the new movie Monsters University. It was definitely a movie for kids, but I still enjoyed it.
Cassie and I took the train home from the movie while Kate went off to a dentist appointment.
For me the highlight of the day was dinner. I cut up potatoes and baked them as fries, made thick homemade flour tortillas, and fried small elongated patties that I formed out of ground lamb and chicken, while Kate made tzatziki from yogurt and cucumber and fresh mint, and we put it all together as gyros. I sprinkled ground cayenne pepper on mine.
Two big Open vSwitch milestones this week:
The GRE tunneling support made it into upstream Linux. Jesse and Pravin have been working hard on this for a long time.
The “megaflows”' user and kernel code was checked in. This makes some test cases up to 10x faster.
The Open Networking Foundation is running a competition for what it calls an “OpenFlow driver.” I think that this competition is flawed, for multiple reasons. Initially I thought about writing about that, and even started in on it.
But in fact, the underlying idea of having a widely usable library for interfacing with the OpenFlow protocol is a good one. Instead of complaining, I think that I will instead work on making the OpenFlow library embedded within Open vSwitch (which is generally a rather good one) easier to use in other applications and libraries.
Kate and I went to a magic show, with mind-reader David Gerard, at the Dragon Theater in Redwood City on Saturday, and I'm still thinking about it.
It was a small theater, with no more than 100 seats, which were packed. Both Kate and I got picked out of the audience as volunteers at different times. When Kate was picked out, she and a man from the audience were both told to sit down and close their eyes. David tapped the man on the shoulder, twice, and then touched his arm. He then waved his arms over Kate's shoulder and then near her arm. Everyone in the audience saw that he did not touch her. Then he had them both open their eyes and asked what he had done. Both said that he had tapped them on the shoulder, twice, and then touched their arm. Kate was still talking about it afterward.
When David picked me, he handed me a small piece of paper and a pen and asked me to write down a place I'd gone recently on a weekend. I wrote “Clear Lake State Park,” folded the paper, put it in an envelope, sealed the envelope, and handed it down the row to someone else in the audience. David brought me up on stage, talked to me for a minute (I only mentioned that it was somewhere in California), and then wrote on a piece of paper. Sure enough, he wrote “Clear Lake State Park.” Then he brought up the envelope and unsealed it, and there it was, still in my handwriting. Impressive.
The front section of the Chronicle today has a two-page ad spread with a picture of a guy wearing an iPod and a few paragraphs of text ending with the tag line “Designed by Apple in California.” Really? Who cares?
We went to dinner at the Mongolian Barbeque in Mountain View, at my request. I was curious what was Mongolian about it, so I looked it up According to Wikipedia, the idea was invented in Taiwan in the 1970s and has nothing to do with Mongolia (and little to do with barbeque). The restaurant in Mountain View claims to have opened in 1973, so it must have picked up on the trend early.
I spent a couple of hours replacing four light switches that all control the same lights (“five-way”) with a new set of “multi-location” dimmers that allow the light level to be adjusted in each location. I took a good hour to study the instructions, look over the existing wiring, and look at other sources of instructions on the Internet and in books around the house. I tagged all the wires according to the instructions and transferred them over to the new dimmers. I crossed my fingers and turned on the breakers.
All the dimmers worked the first time. And the second time. I was shocked. I honestly expected to spend all afternoon debugging.
I finished painting all the exterior lamps.
Whenever I do any woodworking in the garage, Cassie likes to come and help. Sometimes she can help, and other times I suggest that she picks out her own project.
Last night, we used the drill press to make large holes in scrap wood. I am much more comfortable letting her use the drill press (with supervision) than I would be letting her use a handheld power drill, because a drill press is so well controlled. A drill press does not depend on physical strength to hold a heavy drill (for a 5-year-old) or physical dexterity to drill at the correct angle and depth. As long as you set it up carefully (the laser guides and depth limit help with this) and clamp your pieces in place, you can obtain reproducible results.
Tonight, she picked out some scrap wood and hammered some nails into it. Then she found some dowel pegs and decided that she wanted to hammer a peg into a piece of wood. We drilled a hole the correct size and hammered the peg into it. Then we drilled a hole in another piece and hammered the peg into that too. The result was two scraps joined with a peg. She immediately decided that it was an airplane or a helicopter (it kept changing) and ran around the house playing with it. I think it's great.
I discovered a few days ago that one cannot drill a hole in stucco with an ordinary drill and an ordinary (“twist”) drill bit. It scratches the finish but does not make a hole. I found out that a “hammer drill” and masonry drill bits are the right way to do this, and so I borrowed one of the former and a few of the latter from a coworker. Tonight I used them to drill a hole and then screwed a screw into it. It didn't work. Stucco is hard as rock for drilling, but tightening a screw crumbles it.
I went to Home Depot for some 1/8-inch toggle bolts and a 3/8-inch masonry drill bit (a size my coworker did not have). I'll try them tomorrow.
I ordered the upholstery foam for my bench at House of Foam in Palo Alto. It was very fast. I was the only one in the store, and the employee there was very helpful.
Cassie and I were home alone tonight. She was very helpful. She helped make the cupcakes we made for dessert, and with the frosting. She helped load the dishwasher, and helped move bags of dirt from up in front of the house to the big planter box in back. She helped bring the garbage bins in from the curb. She helped with other things too, and didn't whine at all. About 9:15 she went to sit down and fell asleep talking to me as I put away a few things in the kitchen.
I cleaned up some more of the exterior lamps in preparation for painting them.
I put up some sun shade cloth on top of the pergola in back, to make it cooler on hot days.
I'm working on spray-painting a ceiling fan, that was a whole array of obnoxious colors, into a more acceptable palette. So far it's gone fine, since spray painting is easy, as long as you mask everything well. One metal grating kind of piece is an exception. Like the rest of the fan, I started by painting this white, and then I painted the color I really wanted over the white paint. The white paint went on fine, and the colored coat went on fine initially. But then, after I watched it for a few seconds, the colored coat started crackling across the piece in a wave, until about half of the coat was crackled. I let it fully dry overnight, then I used a wire brush to take off the loose bits of the colored coat (which also took off the white paint underneath it), and then tried again. Same result. I am puzzled.
I completed the finishing of the bench. It is now all painted and varnished. Now I only need to attach the top to the sides and upholster the top. I do not have the upholstery pad yet; I might try to buy it this week, or order it online.
I believe that all of the “megaflow” patches for Open vSwitch have been posted to ovs-dev. When these get fully reviewed and pushed to master, common configurations of Open vSwitch should become as fast as the Linux bridge in the corner cases with high numbers of flow where before it performed poorly. This is very exciting.
Getting openflow.h to the people who need it has been a problem. I set up a webpage to fix the problem.
I ordered a copy of The Mindbody Prescription, by John Sarno, M.D., for a friend of mine who is suffering from RSI. I highly recommend this book. It cured me (years ago), and I've seen it cure two of my friends, too.
I have a few special thanks to give to people we ran into on our vacation:
The couple who run the camp store at Clear Lake State Park. They were very friendly and helpful. When we rented a pontoon boat for one afternoon, they charged us $30 to fuel the boat back up, but the next day they told us that it hadn't cost as much as they charged us and gave us $10 in free ice cream that we had planned to buy anyway. They also gave us a couple of free books out of their bargain bin (“as long as you promise to read them”).
Our guide at Safari West on Monday (sorry, I do not remember her name). We have taken the tour there half a dozen times, but we still learned a ton of new information. Plus, when she noticed that we were cold, she radioed to the front to get some blankets brought out to us on the truck.
In the morning, as we had the previous night, Cassie and I spent a lot of time playing “follow the leader” on all the big rocks around camp. They are big enough to stand on, and spaced closely enough to step or jump from one to the next, and so we were able to go across much of the camp without ever stepping on the ground. We could also go pretty high up, and pretty far down the steep slope down to the lake. Cassie and I alternated being the leader.
We ate breakfast and packed up camp in the morning, and left by 10 am or so toward home. We decided to take 101, instead of 29, back to home. This quickly seemed like a mistake, because of the tight winding turns that made Cassie and me feel slightly nauseated. For a break, we stopped at a gas station (we also needed gas) and got Cassie a snack. The available snacks were not very healthy, so I let Cassie have a bag of gummy worms.
A few miles down the road, we found out that Cassie had eaten the whole bag. Her stomach started to hurt. It started to get worse, so we pulled off at the next exit off 101… and found ourselves at Francis Ford Coppola Winery. It turned out to be a beautiful, resort-like, inviting place with an outdoor bar and pool. We sat at the outdoor bar and ordered drinks and lunch. I had read an article in the Chronicle the previous Sunday about how rosé was now being taken seriously, so I ordered a glass. I was very happy with it, and Kate liked the pinot grigio that she ordered too, so we drove on afterward taking a bottle of each one with us.
We stopped at Safari West for the 1 o'clock tour. This was great, and Cassie was delighted with the tour. It was over about 4 o'clock, and we left by about 4:30 after stopping at the gift shop.
We ate dinner in Sausalito at Dario's, which has great artisan pizza. We left there about 6:00 and made it through San Francisco to our home in San Carlos by 7:00 or so.
We went for a hike in the park in the morning, ate lunch, and then our friends had to leave for home. Afterward, we noticed how quiet it was in the camp. We were the only occupied campsite visible from our site. It almost seemed eerie for a state park on the weekend after Memorial Day to be so empty.
The whole weekend was hot, but this afternoon was the hottest of them all. I felt tired and beat, so I spent the afternoon alternately dozing and reading under a tree, and Kate and Cassie went to swim yet again. We took an ice cream break at the camp store.
In the evening, when the day had cooled, we had chili dogs for dinner.
In the morning, our friends were there. We ate breakfast with them. All of us went down to the camp store, where we decided to rent a pontoon boat for the afternoon. In the time before the rental started, we showed Cassie and our friends' children how to fish along a creek by the camp store, and ate lunch.
We spent 1:00 through 4:30 on the pontoon boat, cruising lazily around the lake and stopping from time to time to swim. The first spot we stopped, almost everyone jumped in and swam around (in life vests). After that, it was mostly Kate and Cassie.
When we returned to camp, Kate and Cassie went swimming again (!) while I went on a beer run with our friends. We ate dinner, roasted marshmallows, drank beer, and went to bed.
We left for Clear Lake State Park late in the morning, taking 101 through San Francisco and past the Golden Gate Bridge to 29 in Lake County.
At one stop along the way, we bought basic fishing gear for Cassie. I bought a new knife to replace the one that I had lost on Caltrain a few weeks back on the way to RADIO.
At the park, we parked at campsite 110 and set up camp. The camp was very sparsely filled—we counted only 5 sites in use in our part of the camp, out of 20 or 30 visible—which seemed very odd for the weekend after Memorial Day.
The park and the camp are beautiful. Our site has a great view overlooking the lake itself.
I made dinner (chicken kebabs). While I cleaned up afterward, Kate and Cassie went down to the lake to swim.
Another family was supposed to meet us at the park, having reserved a neighboring campsite, but they were delayed on the way and did not arrive until after we had gone to bed.
I'm feeling better today too.
I'm feeling much better today.
I had to go in for jury duty at the San Mateo County Courthouse today. Based on some “reviews” on yelp that said that there were uncomfortable chairs, unfriendly staff, and unnecessarily restrictive rules, I was worried that it would be a painful experience. It was not, although it's nothing I would volunteer for.
I arrived about 8:30 at the courthouse. There was an X-ray and metal detector, but I was only behind one other person and it only took a few seconds. I went downstairs to get in the line to enter the jury assembly room. The clerk running the operation took my summons slip.
After a few minutes of waiting (in a plain but comfortable enough chair), with free wi-fi, the clerk told us the basics and played a video with a little more information. She told us that there was a jury call for 9:30. A few minutes later, she got a phone call and told us that the jury was no longer needed for that case (she did not know why). About 10:00, she got another call and told us that we would not be needed that day. We filed out and the clerk gave us slips saying that we had been there.
We went to Cassidy's kindergarten orientation in the afternoon as a family.
In the evening Kate and I went to a cooking class downtown. We made dim sum. Afterward, walking along Laurel Street, we noticed a Tesla, a Corvette, some kind of turbocharged Jaguar, and a Mercedes all in a row. San Carlos is a fancy town.
I felt sick to my stomach all day. I didn't get much done.
We went to a barbecue at a friend's house.
I've felt this way for some time now, but I wasn't aware until now that someone had formulated it as a general principle. Here it is, Bacchus's First Rule of the Internet:
Anything worth doing on the internet is worth doing at your own domain that you control.
I think that this is related to why I only publish throwaway content that I don't care about on other services, like Google Plus and Twitter. They just aren't under my control, and I can never know when they might disappear or change in some way that I dislike.
I put an earthquake strap on the grandfather clock. For some reason, the possibility of it tipping over and smashing in an earthquake was freaking me out in a way that nothing else ever has.
I finished ripping up our old wooden gates and started building a new planter box.
I gave an internal tech talk at VMware this morning similar to the one that I did at HackerDojo on March 20. One email reaction:
THANK YOU for FINALLY redeeming the notion of “tech talks” being actually “technical” instead of marketing! I loved it! I actually learned a lot more from your 1 hour presentation than I have reading random openflow/ovs articles on the web for many hours :)
Overall I really enjoyed your presentation. :) :) :) :) Great job. :) :) :) :) I give you a 5 out of 5 stars. :)
Nine out of nine smileys, I guess, too.
We went to the San Carlos farmer's market in the evening. I sat down to watch Cassie play with other kids in the park in the middle of Laurel Street. I heard the guy sitting next to me mention that he was an Internet entrepreneur. I started up a conversation and it turned out that he had pitched Andreessen Horowitz earlier the same day, and that a lot of the conversation revolved around similarities and differences to NVP (now called NSX). Small world.
My sister flew in at SFO in the morning and left in the afternoon. In between, we picked her up and showed her around our new house and San Carlos downtown.
Open vSwitch has a code review problem. This problem has at least two aspects. The first is that we do not have enough developers doing code reviews. The only good solution there is to get developers to spend more time doing code reviews. One sub-aspect of that problem is that some developers feel that they don't get enough recognition for the considerable time it takes to do a quality code review.
The second aspect of the problem is that currently it takes some effort to keep track of which patches are actually out for review. This is probably less of a problem for developers who actively do a lot of code review than for others, because anyone who reads ovs-dev more than casually will not have a problem noticing which series have not had followups, which have been superseded, and so on, because we are careful to include all of this in the email chains. But it is a problem for managers who want dashboards, statistics on who reviews what, and assignment lists.
It seems that the solution that we will adopt in the medium term is patchwork. It has a philosophy that I support. In particular it doesn't attempt to replace the email-based patch workflow that OVS developers already like. I think that it solves the whole second aspect of the problem mentioned above, as well as the “credit” subpart of the first aspect. (I don't think that the whole first problem can be solved via technical means.)
Others have suggested Gerrit, but Gerrit is awful. I have also seen Review Board suggested; I don't have any experience with Review Board, except to watch some emails fly by internally at VMware (apparently “Ship it!” is the Review Board equivalent of Open vSwitch's “Looks good to me.”).
For the short term, I'm trying another solution: I am pushing each patch series that I send out for review to a Git repository dedicated for that purpose. As I update the patch series, I update the repository, and as I merge a series, I delete the branch. This will at least solve one part of the problem, which is to let everyone easily see what needs review. We will see how that goes.
This morning I found myself at the back of a group of five riders from Sand Hill to Page Mill on Junipero Serra. They were 2 or 3 mph faster than my normal comfort zone, so I worked hard to keep up, and managed fine. I think that was the fastest I've ever made it between those two roads. It was tiring but felt rewarding.
I fixed 5 bugs in PSPP tonight.
The San Carlos Hometown Days 5k/10k Fun Run went right by our doorstep this morning. It is not a big race, so it only took 20 minutes or so to go by.
Went to Maker Faire with a large group. I did not enjoy it as much as in previous years. I think that it is starting to outgrow the San Mateo County Fairgrounds. I don't know what that means, since I can't think of any larger local venue.
We participated in the San Carlos Hometown Days parade in the morning as part of the San Carlos Mothers Club group. Cassie rode her bike, which she decorated with streamers before we left for the parade. Following the parade we spent a little time at the festival. Everyone was tired so we went home for the afternoon. We did come back in the evening for the Kiwanis Club's sausage dinner.
The VMware Networking and Security Business Unit had its first weekly dodgeball game in the VMware gym this afternoon. Fun. I need to practice.
Last night I heard some cat-related noise upstairs. A bit later I noticed that my Internet access was down. I made the mental connection between those two events and went up to look at the cable modem and the wireless router. Nothing seemed wrong with either one. Then, after lots of fruitless messing around, I noticed a button that I hadn't spotted before on the front of the cable modem, labeled “Internet On/Off.” I pushed it. My Internet access sprang back to life.
The primary purpose of a cable modem is to give access to the Internet. Who decided to put a button on it, easily pressed by a clumsy cat, that turns off access to the Internet? Some idiot.
The other half of the RADIO research talks were presented today. Then I went home on the train.
Half of the RADIO research talks were presented today. I guess I should not talk about their topics, but most of them were pretty specific to VMware products rather than academic.
One thing that has started to bug me is that the badges that everyone wears prominently include, in addition to name and department, a person's title, e.g. “Member of Technical Staff” or “Principal Engineer.” The problem is that it invites a snap judgment about the person's capacity or skill level, as well as a mental comparison of one's own level to the person's. I do not think that this is productive; ideas should be judged on merit rather than by their source.
I'm at the VMware internal RADIO conference through Wednesday. It is huge. I expected a fairly intimate conference, but there are 1400 VMware employees, primarily engineers, here. I don't normally have agoraphobia, but when I first walked into the crowd in the lobby of the Hilton, I came close to walking right back out again. Fortunately it got better after that.
My shoes were starting to hurt me on the walk to the conference hotel, so I stopped at a shoe store, bought a pair of shoes, put them on, dropped the old ones in a trashcan, and continued walking. Probably took 5 minutes total.
I bought Kate a grandfather clock for Mother's Day, from a local antique store, and it was delivered early this afternoon. It is a beautiful piece from the 1970s and has lovely chimes.
I bought a big wrecking bar/nail puller and worked on ripping the old driveway gate into boards. Whoever built it really knew how to nail wood together.
I started painting over the primer on the bench project.
I started painting the ceiling fan in the guest room white. It was previously a mix of stark red, yellow, green, blue, and orange, which looked ridiculous.
Let's be clear: if all of these claims, including the system claims, are not patent-eligible, this case is the death of hundreds of thousands of patents, including all business method, financial system, and software patents as well as many computer implemented and telecommunications patents.
If so: hurray!
I'm a little tired of Bike to Work Day. I'm not sure what the “energizer stations” are really good for. They must be for people who only bike to work one day a year. Anyone who needs a banana and a cup of coffee halfway to work isn't going to bike more than one day a year anyway.
Riding home was worse, though. Somehow I got stuck with a group of weekend riders. They would ride slowly in the straight open sections, so I would pass them. When I would slow down for my safety when I was passing long lines of stopped cars, they would pass me yelling out “on your left!” In fact they seemed to spend most of their time yelling that and other things (“watch it” when somebody would open a car door anywhere within a hundred yards of the road) and making hand signals at hazards no one not blind could miss. Very annoying group.
I have a huge backlog of patches for threading Open vSwitch. Anyone want to review them?
At long last, I merged the “psppsheet” branch into the master branch of the GNU PSPP repository. The result should be much more usable and fixes many bugs against the previous implementation. Some new bugs are to be expected, although I hope they will be smaller.
I think I may have been working with my coworker Justin too long. When he got in this morning, we talked for a few minutes, and then as we headed over to the cafeteria for lunch I started out, “So…” He cut me off and said, “I know exactly what you're going to ask.” I said, “So just answer it then.” And then he answered exactly the question I was going to ask. (The question was, “Do you think I was too hard on that guy who asked an irritating question on the mailing list over the weekend,” which is not a question I ask often.)
Our contractors finished installing the new driveway gate today. It looks great.
I finished putting the primer coats on the edges of my bench project and sanded the whole thing with 220-grit sandpaper.
I replaced the shift cable and housing with new ones.
I found out why my bike had been shifting badly for the last few weeks, when the shift cable broke on the way into work. I limped the last few miles in and the whole way back later with only 3 working gear combinations.
Minnie now seems be named Molly.
We have a new young gray cat, tentatively named Minnie.
Our contractors showed up to install a new driveway gate to replace the one that fell down in high winds a few weeks ago. Unfortunately there were plenty of problems and they will have to come back in a few days to finish the job.
Went to dinner with Kyle Mestery from Cisco, who is in town from Minnesota on a business trip.
Went to Ardenwood Historic Farm along with two other families.
Had Reid, one of my coworkers, over to dinner.
We spent all afternoon, into the evening, at Dan my coworker's new house in Los Altos. It's a great place, nice inside with a huge beautiful green backyard with a pool. Cassie spent almost the whole time in the hot tub (which didn't actually get that hot until very late).
Kate and Cassie went to the Exploratorium in San Francisco today. Kate came back talking about the variable resistor that they had been able to see inside and play with. I pointed out that a variable resistor is something that you can build yourself with a piece of paper and a pencil. So we did, by heavily shading a box about 1/2 inch by 3 inches in pencil on a piece of paper. Then, setting a multimeter to measure resistance, hold one probe touching one end of the box and move the other probe along its length. We found that resistance varied from about 15 kilohms when the probes were near each other to a few hundred kilohms when they were at opposite ends of the box.
We're thinking about making Open vSwitch T-shirts, but we need some kind of logo or mascot. Any ideas? The best one I've heard so far is some kind of antelope with V-shaped horns.
This afternoon my coworker Justin gave me a sneak preview tour of his new house. It is currently stripped down to the studs and the joists, but it is easy to see how nice it will be when it is all put back together.
FAA budget cuts leading to travel delays have been all over the news for the last few weeks. But I have seen no one ask the question that seems obvious to me: why is air traffic control funded by taxpayers, instead of by travelers? Every ticket you buy has a “security fee” attached. I always assumed that some part of the rest of the ticket price covered, you know, the airport, that is, things like air traffic control. Now I find out that I've been paying for air traffic control through my taxes? That doesn't make any sense. Let's shift air traffic control costs to travelers. It's only fair that people using the service pay for it.
Californians will never terraform Mars. It would be impossible to ever compile an adequate environmental impact report.
In the morning I replaced three ungrounded outlets with GFCI outlets. All of them were end-of-the-line outlets and I could not identify any outlet upstream of any of them. I guess they all run in parallel to the breaker box.
I also replaced another outlet that had one bad receptacle.
We went to three birthday parties today. The first one, in the morning, was for an adult. We took along a bottle of wine as a gift. When I gave it to the host, he opened up a large cabinet to reveal a wine fridge that contained probably 200 bottles of wine. I felt pretty embarrassed then.
The other two parties were for Cassie's friends.
We went to RoboGames in the San Mateo Event Center. We watched robots fighting (the best was from the Brazilian team, the same as when we went before a few years ago), robots playing hockey, robots playing soccer. Cassie got to pull a robot on a leash, too.
The second and final day of the ONF “member workday” had multiple sessions that seemed worth attending scheduled concurrently. I went to the “extensibility” session for the workgroup that I participate in most heavily.
I presented a demo of some Open vSwitch features, the same demo that I presented at Hacker Dojo in March. The demo is also now checked into the Open vSwitch repository in the form of a tutorial. Ed Crabbe of Google seemed impressed with the demo; I was surprised because he is difficult to impress.
I biked home totally exhausted after lunch. I biked about 148 miles this week, about 1/3 farther than a typical week, and 84 of those miles in the last 2 days (my house in San Carlos to the Santa Clara Marriott and back, twice), so I have reason to be exhausted.
First day of the Open Networking Foundation's “member workday.” I went to the OF-CONFIG working group meeting in the morning. It was odd to see so much discussion of issues that we settled and solved in Open vSwitch years ago, especially the discussion of controller discovery and implementation of in-band control. This discussion was actually based on the documentation that we generated as part of writing and debugging the Open vSwitch implementations.
Stu Bailey from Infoblox presented LINC, the Infoblox-sponsored implementation of an OpenFlow switch in Erlang. This was at least the second time that I had seen him present LINC. The previous times he had been all fired up and excited, ready to take the world by storm. This time, probably six months after the last time I'd seen him, Stu looked and sounded more subdued, as if he'd decided that it wasn't quite working out. I felt a little sorry for him.
My coworker Justin Pettit and I had a couple of drinks in the hotel bar after the morning session with David Meyer (Brocade) and Rob Sherwood (Bigswitch). (I don't think I'd met David Meyer before, but Justin and I have a history with Rob back to the early days of OpenFlow when he was still at T-Labs.) There just didn't seem to be much point to listening to the “migration” or “market education” sessions. I was slightly interested in the testing and interoperability working group session later on, but I was having good luck with professional networking so I stuck with that. You can learn a lot more in a few minutes talking to the right people than you can sitting in a working group session for a few hours.
Went to a Greek cooking class tonight with Kate. The dishes that stood out were both made with eggplant, which I have never cooked before. In the more interesting of the two, we charred the eggplant over an open flame on the stove until it blackened and the skin flaked off.
I read Cassie's book Ladybug Girl and Bumblebee Boy to her again tonight. At one point in this book, Lulu (Ladybug Girl) is frustrated playing with others, and she thinks about playing by herself instead. At this point, before I turn the page, I think about how much fun she could have playing by herself, because that's what I would naturally do. Of course, it's not what actually happens in the book, because society says you're supposed to play with others.
It was very windy all afternoon and evening. I had to work harder than usual to make it home. In a few places I had to tip the bike significantly to one side to avoid being pushed over the other way. It looked to me like even some motor vehicles were getting pushed around a little bit. The weather report claimed 30 mph winds but I suspect that the gusts were bigger than that.
Managed to meet some of the neighbors after inviting them to bring their kids over before the jump house company came to take it away. One of our neighbors works for a company that does valuations for startups, to help (among other things, I'm sure) price the shares they offer their employees.
Went to see Cats at the Fox Theater in downtown Redwood City. I had not seen Cats before. I wish I still hadn't. It's two hours of furries dancing.
Did some more sanding in preparation for priming the other side of the bench.
I made red beans and rice and pan-fried catfish for dinner. Kate did not like the catfish because it tasted too fishy. (She only likes fish if it is breaded heavily and covered in enough tartar sauce that it does not taste like fish. Terrible.)
Spent the whole day cooking for and then holding a Cajun-themed party at our house. We made shrimp etouffée, chicken and sausage gumbo, cheese grits, Cajun spiced potatoes, catfish nuggets, and served them with prepackaged crab cakes, brown rice, and wheat berries. Our friends Colleen and David also brought jambalaya. We had three kinds of New Orleans beer as well as coffee and chicory.
I had been planning to make red beans and rice also but ran out of time and out of burners on the range. Tomorrow.
The catfish nuggets were the surprise hit. Everyone liked them. The etouffée really stole the show, though. We have lots of leftovers for this coming week.
We rented a jump house for the kids and served them macaroni and cheese and juice boxes.
Found a good Chinese restaurant at Laurel and San Carlos down the hill from us, “King Chuan.” Their menu has all the usual food you expect but it also has a page in the front with a bunch of lists that say, “If you like dish X, you should try our own special item Y.” We ordered a couple of these menu items made from their own special recipes and were pleasantly impressed.
Kyle Mestery mentioned me nicely in his blog post.
Went out shopping for food for the Cajun party we're throwing Saturday.
Kate tells me that I woke her up in the middle of the night laughing madly to myself in my sleep. Weird.
Over the weekend I watched the first two episodes of Mad Men. As many people know, the theme of this show is the how gender relations have changed in U.S. society since the 1960s. I noticed that part, of course. But the bit that jumped out at me was when, in the second episode, one secretary tells another to retype a letter because of spelling errors. I found this almost offensive, the idea that a person would have to waste a ton of time retyping pages of text just because of scattered mistakes. How times have changed.
I picked up Kate and Cassidy from the airport in the evening, back from Disneyland.
More woodworking. I put four coats of primer on one side of the bench project. It is well done. So far, my patient experimentation on a test piece seems to be paying off.
I fixed a number of bugs in PSPP.
I finally felt motivated to resolve the problem of the ungrounded outlets in the front room. That room and the room next door have a number of 3-prong outlets where the ground is not connected. I don't know how to run a ground wire–the insides of the walls are not easily accessible–so I decided to use GFCI receptacles instead, which is also acceptable though less preferred. The next challenge was that, in the outlet I was most worried about, the wires were so short that I was unable to release them from the push-in terminals on the back of the receptacle. Instead, I had to cut them off and then use twist-on wire connectors to extend them to a reasonable length.
Another receptacle actually had the plaster or wallboard or whatever over the metal wings that steady it against the box. I had to chip it away with the sharp end of a screwdriver to pull the receptacle out of the box. This explains why this receptacle was one of the two in the house in the old style, not the more modern Decora style, and the only one without a grounding hole.
I had hoped that all the ungrounded outlets would be on a single run so that I could protect all of them with a single GFCI receptacle. But in fact none of them run together. Puzzling. I only bought a single GFCI so I am going to have to go back and get some more of them. Or I could try harder to figure out how to run a ground wire, I guess.
While I had all the equipment out anyway, I installed another electric outlet with built-in USB power sockets on one properly grounded box.
Kate and Cassidy are off at Disneyland with grandma for the weekend of Cassie's birthday, so I'm home alone. I spent the day working on my woodworking project and walking around town to get some exercise after a sedentary week.
I also installed an occupancy sensor light switch in the bathroom near the kitchen, a molly guard over the garbage disposal switch in the kitchen, and an electric outlet with built-in USB power sockets by the kitchen table.
I bought a lawn mower and used it to mow the lawn. It was overdue.
I discovered that Bianchini's, under a mile away, sells the Zaya brand rum that I like.
I found out that Devil's Canyon brewery is moving from Belmont to San Carlos, close by. That will be nice.
I watched a preview of the video of my Hacker Dojo talk from a few weeks ago. I wish I didn't say “um” and “uh” every second word in the first half of the talk, but it's better after that.
Final day of technical sessions at NSDI 2013. Here are the talks I found most interesting.
I expected this to be about some kind of cellular L2 protocol that I didn't care about. It was not. It describes how to predict with good accuracy how many packets one may keep queued at any given time to ensure low delay. This is very useful for, say, online video chat. The evaluation showed a 2x to 4x improvement over Skype, Facetime, and Google Hangout on delay.
This paper's title is deceptive. It is not about how to build system services in operating systems. It is about how to build an operating system for a building, that is, for large commercial buildings. It turns out that modern commercial buildings have tons of equipment that can be digitally monitored and controlled, such as thermostats, ventilation, and lighting controls. But it's all siloed off, uses archaic (Arcnet!) or obscure technologies and protocols, and not generally connected to external networks.
Second day of technical sessions at NSDI 2013. The talks today are less right up my alley. I only took notes on the one below.
The part of this paper that interested me was the novel “optimistic cuckoo hashing” technique. A poster presented yesterday also described a related “Bloom filter” like construction based on the same ideas. This technique is not described in the paper; see The Cuckoo Filter: It's Better Than Bloom for the details.
First day of technical sessions at NSDI 2013. Here are my notes on the talks I found most interesting, starting from the most exciting and working downward.
This paper made my head explode. The big idea that it presents is that we don't have to use the control plane, with its slow time to convergence, to ensure connectivity. Instead, we can use simple per-packet mechanisms available at the data plane level (even in merchant silicon according to Panda) to take advantage of physical redundancy in the face of failure. The actual mechanism that the paper proposes is not important in my opinion. The insight that connectivity can be maintained at the data plane is novel (in my experience) and very exciting.
Describes a system that the authors built to analyze a database of trouble tickets using natural language processing with a small amount manually expert-labeled domain knowledge. It never would have occurred to me to do this but the authors mentioned a number of important insights that they obtained from the results.
I talked to the author for a long time at the poster session the following evening. It sounds like there is a good chance that they may be able to release the source code to their system (called NetSieve) for general use. That would be valuable.
Proposes sketches as building blocks for monitoring switches. Proposes a standardized pipeline consisting of “hash,” “classify,” and “count” stages for general sketches in hardware. This would suffice to implement many of the forms of monitoring that people want to do in practice on switches, in a general-purpose way.
We could add a similar pipeline to the Open vSwitch kernel module. Some of the changes we are planning already (wildcarded kernel flows, kernel hashing) would provide the necessary primitives. I spoke to one author of the paper about that possibility at lunch.
Presented a way to represent OpenFlow as composable functions and then to use those as a way to compose multiple applications in an OpenFlow controller. Has some support for overlaying logical networks on top of physical or virtual ones under the term “topology abstraction.”
Presents a real-time policy checking tool that watches the stream of state changes in an SDN. Traces all possible flows through the network. Incrementally updates its checks as flows change.
I remember seeing an earlier version of this work presented last year at ONS. Each time I see it, I find myself wondering whether it's practical for general flow tables and especially for the complicated many-stage flow tables that NVP uses. It seems to me that the memory required would explode.
Interposes on change in the flows table in network elements and checks for violations of invariants. Uses equivalence classes to minimize search space (look like the packet classification problem to me but perhaps it is simpler?). Very fast–mostly less than 1 ms to verify a single change.
If a network has millions or billions (!) of OpenFlow flows, then it can be a bottleneck to put each of those flows in its “natural” place. The paper's insight is that we can move many flows from their initial locations in the network to other switches along the path that the packets would follow in the network. One complication is identifying what flows can be moved while retaining correctness; another is identifying what would be a better location.
I spoke to the author at lunch. He spent some time studying and implementing different software packet classification algorithms, including some of the more complicated algorithms described in the literature. He told me that (in some cases? I don't remember his exact qualifiers) the simpler algorithm that Open vSwitch uses performed better than those, so he used that one in his own code.
Elastic applications need elastic middleboxes. But existing middlebox applications don't relieve hotspots as you add more of them because they have state that needs to be migrated. This paper presented an OpenFlow-based way to partition flows across middleboxes as you split them into multiple middleboxes and a library for implementing the small amount of shared state required across the split. It evaluated a prototype based on Bro.
I was surprised that the authors did not propose a system that tried to do splitting and merging automatically, without needing to modify the source for the middlebox. It would obviously be more difficult to do so, but it is also a more interesting problem. I mentioned this to the speaker later on and he said that that was their original idea too but did not work out.
Many of the papers presented today used OpenFlow or Open vSwitch for their implementations or prototypes. I keep running into people who recognize my name, which is remarkable given that I haven't really published anything in years.
Flew to Chicago for NSDI 2013. I'm traveling with Andy Curtis, another member of the former Nicira networking group at VMware. The trip was unremarkable.
We arrived in time to make it to the welcome reception in the evening. Little food was served so we had dinner at the hotel later.
After some experimentation, I've managed to get the paint on my bench project to come out close to what I'm looking for. Roughly:
Sand with 120 grit, then 220 grit.
- Three or more coats of latex primer
Wipe with damp rag. Dry with dry rag.
Apply primer with foam brush and wait for it to dry.
Sand with 320 grit after each coat, possibly with 220 grit before that if it looks like it needs it.
- Three or more coats of latex paint
Wipe with damp rag. Dry with dry rag.
Apply paint with foam brush and wait for it to dry.
Sand with 220 grit, then 320 grit.
Next step: varnish. Seems like a water-based polyurethane is the best choice for this light-colored paint.
All this is on my test piece. I haven't done anything to my project pieces other than sanding.
We went to the San Francisco Zoo this afternoon. Looking at a sign, Cassie pointed to a word and said, “Hey, it says `zoo' there, zee oh oh.” I think Kate or I might have said something like, “Yeah, that's `zoo.' ” Then we both paused two beats and realized that Cassie had successfully read her first word to us.
Made rye-whole wheat focaccia bread and served it with beef kebabs and sweet potato fries for dinner at a friend's house.
So much to do, so little time.
The software from “Workday” is possibly the worst software I have to occasionally use. It does not work with the versions of Firefox or Chrome that I have on any of my computers or my Android phone. Of all the browsers that I can find, it works only with Internet Explorer (in a VM). And what is all this complication there for? No reason at all. Workday is only a way to update personal information like home address. They could do it with HTML 4.0 forms.
Ate dinner at the Romano's Macaroni Grill in the Hillsdale Mall. I had not eaten at this chain before. It turns out to be a casual Italian restaurant. The service was very slow, and my wife's order was lost. The “Bibb and Blue” salad was full lettuce leaves, so that I needed to actually cut them up with my knife, without any dressing that I noticed. The sea bass was overcooked and lacked flavor.
Between Romano's and the Olive Garden, I recommend the Olive Garden. And if you go to Romano's, don't bother ordering fish.
I noticed two cyclists this morning riding bikes with Look pedals while wearing flexible-soled house slippers. They looked uncomfortable. I don't think I want to join this trend.
We're going through with the next step in the application process for a foreign exchange student starting this summer.
The previous owners of our house left many cans of pain in a cabinet in one corner of the garage. Many of them are labeled with the room in the house that they go with. I spent a lot of time sorting through them to pick out colors as candidates for painting the bench. Then I picked my top three choices and painted small pieces of wood with them to help me decide. In the end I chose a shade of tan or light brown for the primary color and a sandy reddish for highlights.
I spent a good deal of time sanding the bench in preparation for priming and painting.
I made corned beef and cabbage, and homemade pumpernickel bread, for dinner. The bread turned out very well. I'll have to make it again.
I finished the basic structure of the bench that I am making. The remaining work is attaching the legs to the top, sanding and finishing the wood, and upholstering the top.
The tool of the day is the chisel. I spent a long time looking for good ways to cut slots to hold the legs to the cross-piece. The best way turned out to be to cut parallel kerfs with a jigsaw, then chisel out the waste. I think I had only ever worked with blunt chisels, because a sharp chisel is a really useful tool.
I suppose that if I had a table saw with a dado blade, that would have been easier. But I don't have a table saw.
Ate dinner with Lucila and her family and some new friends of ours. Grilled kebabs.
I am feeling a bit sore today because of the extra 11 miles that I biked yesterday to and from Hacker Dojo, which was an extra 50% on top of my usual 22 mile daily commute.
I gave my talk “Open vSwitch: Past, Present, and Future” at Hacker Dojo tonight. The slides are posted at openvswitch.org (at the bottom, under Presentations).
The talk went very well, especially given that I spent fairly little time preparing and did not rehearse at all. About 100 people attended.
The weakest part of the talk, in my opinion, was the initial “past” section, in which I gave the history of Open vSwitch as a sort of personal narrative. This did not grab the audience's attention in the way I'd hoped. (Perhaps I should leave the jokes to the professionals.) If I were to give the talk again, I would shorten this section, because the talk ran a little over my 1 1/2 hour target.
The part of the talk that I personally found the most exciting, and I hope the audience did as well, was a demo that I did in the middle. I wanted to do something more interesting than the “See, the ping goes through! See, the ping stopped!” networking demo that one commonly sees. So, I decided to do something to broaden users' understanding of Open vSwitch.
You see, there's a OpenFlow action called “normal” that (as I recall) Nick McKeown invented. The idea is that, given that a hardware switch has a path that packets would follow if OpenFlow were not in use, OpenFlow should allow the user to take advantage of this. Thus, if one puts “normal” into a flow's actions, the switch treats it as it normally would.
Open vSwitch likes to think that it's a software implementation of a hardware switch, so it implements “normal” in a fairly capable way, with VLANs, MAC learning, and so on. The problem with that (which I called “the curse of `normal' ” in my talk) is that it means that users tend to try to take advantage of “normal” instead of taking advantage of advanced Open vSwitch features and extensions that can do similar things and in the end are a lot more flexible and extensible. So my demo showed how one can implement VLANs and MAC learning with Open vSwitch extensions, without using “normal.”
The source code for the demo is also on openvswitch.org.
The organizers for the talk say that video will be posted in the next few days. They volunteered to let me view it privately first, in case I notice that I said anything I shouldn't have (I hope not). I haven't seen it yet.
The most awkward moment of the night was when I was changing out of my bike clothes and realized that I hadn't brought any pants with me. I leave a pair of slacks at work, so I don't normally bring them with me, so I'd forgotten. I felt pretty odd walking around all night in bike shorts, and I can't imagine I looked very good either. At least during the talk I was standing behind a podium.
The organizers of the talk very kindly took me out to dinner afterward.
Kate came home from the grocery store with maple syrup in what looks like a lot like a wine bottle or a liquor bottle. I sure hope I don't pour myself a glass and take a swig of it by mistake.
On second thought, that might be awesome.
From a San Francisco Chronicle article:
SmartMeter foes aren't letting up. They say they'll keep watch over PG&E's activities in the city.
“In Sebastopol, we're going to remain vigilant,” said Sandi Maurer, a Sebastopol resident who leads the EMF Safety Network, a group opposed to wireless technology. “We're going to carry cameras, and if we find someone installing meters, we're going to call the police and we're going to confront him.”
OK, let's break this down and read between the lines:
“We're going to carry cameras…
that record on physical media
…and if we find someone…
while we're driving around using paper maps
…installing meters, we're going to…
rush to the nearest pay phone and
…call the police…
who will activate the blinky light on the nearest police box to eventually summon the attention of an officer
…and we're going to confront him.”
Good luck, guys.
I spent the late afternoon making Irish stew with Guinness and red wine, plus soda bread. I don't think I've ever made soda bread before, but I know that I'll make it again, because it is easy to make and delicious. The stew was also very good, but there is not too much to distinguish it from other dark meat-and-potatoes stews.
Cassie painted my thumbs shiny green yesterday. I wonder how long I'll put up with it before I clean it off.
I finished most of the cuts in my bench project today, including the complicated decorative cutout in the middle of the main support board. The only significant cuts left are for slots that hold the main support board to cross-pieces. The width of these cuts need to be almost exactly the thickness of the cross-pieces, to ensure snug fit, so I'm doing some test cuts in scrap wood to figure out how to get the exact width I need. My first test cut was about 1/8 inch too wide, so I'll make the next one that much narrower.
I've been building a bench out of plywood for the past few weeks, based on plans from a book. This morning I finally got the last of the materials I need. I made the final large cuts early this afternoon. Now I'm in the middle of adding a bunch of decorative patterning holes. I have a 1-1/4 inch Forstner bit that makes beautiful smooth-walled circular holes using my drill press.
I didn't realize before I started doing little woodworking projects how much of the time is spent carefully measuring (and remeasuring), clamping, testing techniques on scrap materials, searching for advice and trying to judge conflicting advice, making jigs, cleaning, and so on. Very little of the actual time making something is actually spent using tools in a direct way toward the end goal.
Our rooftop solar panels have been connected to the grid for a week or two now. Monitoring shows them producing between 12 and 17 kWh per day depending on how sunny it is. That seems pretty good for March.
We went out for pizza to celebrate Pi Day.
It seems that I am going to attend NSDI 2013 in Lombard, IL next month, April 2-5. Anyone interested in a meet-up, let me know.
I decided to try out commuting along Junipero Serra again. I was in luck. It's all back in order again. All I saw missing was lane striping. It's a much more pleasant route than El Camino. I was energized and felt like I made record time on the way home.
I'm starting to think about what I should talk about at Hacker Dojo next week. If you have any suggestions, email me.
I remember doing little woodworking projects at preschools and day camps when I was Cassie's age or a little bit older. The only part I remember well is spending lots of time sanding. I remember sanding as boring and tiring and no fun.
That's why I bought a random orbital sander today. In a test run, it made quick, effortless work of sanding a block of wood before I applied stain to it. I think it'll be a handy tool.
I took Cassie to her art class at Celebrate Art in Redwood City this morning. Until last year, this class was run by a woman named Ginger who was very good at it. Since then, it's been taken over by new teachers who we're not sure about yet.
After class I took Cassie to see a demonstration of wood sculpting with chainsaws. It's a craft at the intersection of fine art and hick.
What does etiquette say one should do when one receives a picture of a naked man you don't know from a phone number you don't have in your contacts?
There is some interesting roadside trash along Page Mill Road in Palo Alto: a metal tape measure that has shattered into dozens of sharp-edged pieces each only a few inches long, scattered along a hundred yards of road. I've gone by it a few days in a row and each time I wonder what would cause a metal tape to break into shards. They aren't really brittle.
We took a Cajun cooking class tonight at the community center a few blocks downhill. The standout, for me, was gumbo. I don't remember having gumbo before, and I think I would remember.
Cassidy and I had dinner in downtown Palo Alto, and then we walked around. We spent a long time chasing each other around the public square with the big egg in it.
I'd forgotten how downtown Palo Alto epitomizes Silicon Valley. There's an Apple store, but I don't know why Apple bothers, because every coffee shop and casual restaurant is like an Apple showroom. Wherever Cassie and I went, almost every person was sitting at a laptop–and not just any laptop, but a MacBook Air or MacBook Pro, often accompanied by an iPad Mini. Ugh.
I mentioned to an Apple employee last year that I'd like a programmable smart watch. Now it seems that it's a product.
Baked loaves of bread.
Read part of a French novel.
Fixed a bug in GNU PSPP.
I feel like some kind of modern Renaissance man.
[*] That may be an exaggeration. I'm not very good.
We spent the whole day out of the house, going places, shopping, visiting friends. This is pretty rare for us.
Our team's recruiter passed along a report on me from “Gild,” a system for evaluating potential candidates' code contributions. Some of its report on me makes no sense at all. For example, it rates me as “top 10%” in HTML with “8+ years” experience, yet I hardly do any work in HTML and I wouldn't say that I'm an expert on it. It also claims that I have “<1 year” experience in “Shell” (no particular kind of shell?), “make,” and “m4” even though I've used them extensively for a long time. Finally it rates me as “top 30%” in “Teamcenter def” even though I've never heard of Teamcenter and don't have any idea what its defs are.
I'm thinking about buying a table saw. The ones at sawstop.com are attractive because of their safety features, but on the other hand they are very expensive ($1700) for someone who isn't sure how much of a table saw he needs.
I had a lot of odds and ends in the fridge, so I made risotto with bits of ham, half a medium onion, 4 small apples chopped small, a bottle of beer, and 2 cups of carrot juice. It was surprisingly good. The carrot juice lent it some sweetness and a bright orange color that made it resemble macaroni and cheese. The flavor of the ham and the apples didn't come through strongly, so if I were to do it again I would either chop them into bigger pieces or leave them out.
I ask almost every candidate the same multi-part question, which takes up a full 45-minute interview slot. The question's topic is one in which I have had some interest for a while. Having gone through this question with dozens of candidates, my knowledge of the topic is naturally broader and deeper than that of most candidates who come by, who don't generally have any idea what I'm going to ask about.
It's not my intent, by any means, but the candidate I interviewed on Monday seemed to find this really intimidating. I was the first interviewer on his schedule. Every interviewer who came after me told me later on that he'd thought he'd done badly on my question. He didn't, and we made him an offer.
Maybe I can change my approach somehow to give off more positive signals when it goes well. Then again, most candidates do worse than him but don't tell the rest of the interviewers that they thought they did badly.
Back to work today.
Latex tubes are commonly a bit more porous than butyl ones, and need to have their pressure topped off more often.
The only time I've needed to inflate my bike tires every day has been when I've had a slow leak.
Kate took the new cat, Dracula, to the vet today because he won't stop peeing all over the house. The vet gave her some medicine to try but it sounds unlikely to help. We will return him to the shelter if it does not. We talked about instead turning him into a mostly outdoor cat, but a few minutes later we discovered him up on the neighbor's roof, so it doesn't seem like that's going to work.
My dad and I went for a walk along the streets in the hills above our house. At one point we were stopped by a sheriff's deputy. It seems that some people who live up there called us in as “suspicious.” Wow. Hard to believe that the San Mateo County Sheriff has nothing better to do than to chase down people walking around in their own neighborhoods and ask them questions. How about, for example, catching the burglars who've hit a dozen houses in the last month or so?
I bought a drill press to allow me to conveniently build a bottle rack that I want for a cupboard in the kitchen. I want it to store bottles of oil, vinegar, and cooking wine.
We visited the Confederate History Museum and the Ogden Southern Art Museum before we flew home.
We visited the World War II museum in the morning and ate lunch at Commerce, a sandwich shop along St. Charles Avenue. We went to Mardi Gras World, where most of the Mardi Gras floats are made, and then to the Audubon Aquarium in the afternoon.
The big event of the day was a private cooking lesson at Crescent City Cooks in a mall along the riverfront. When we arrived, the chefs offered us wine to drink, red bean hummus, and an artichoke dip. Then we dove in. We spent all afternoon preparing jambalaya, crawfish etouffé, and bananas foster. It exceeded my expectations. We ate at the end, and then they gave us some just-prepared pralines to take with us.
We ate dinner at The Irish House near our hotel. This is the fine restaurant version of an Irish pub. Their drink menu featured 30 or so bourbons, whiskeys, scotches, and ryes. Neither of us knows much about any of these, so we ordered a flight of five of them. We decided that, of the five, we liked the John L. Sullivan the best. Jameson and Bushmill's were also among the flight; I don't remember the other two.
In the morning we took a swamp tour by airboat, a small boat with an aircraft propeller on the back that pushes it along. Our guide told us it topped out at about 50 mph and only needed a few inches of water to run. We saw alligators, nutria (big swamp rats), birds, and other wildlife. At high speed I kept worrying that the contact lenses were going to pull right out of my eyes.
We spent most of the rest of the day walking around the city, especially the French Quarter. We stopped at the famous Cafe du Monde to try out the coffee and beignets. We were disappointed; the coffee was ordinary and beignets turn out to just be pillow-shaped churros with powdered sugar dumped on them. I don't know why this is a famous place.
We ate dinner at a restaurant that had just opened in December, named La Fin Du Monde. It was set back from the street and at first I wasn't sure there was any restaurant there at all. We were the only customers there for most the time we were there, which meant that we got very personal service. Beet salad with horseradish ricotta.
Kate and I flew to New Orleans, leaving Cassie with her grandparents. We checked in at our hotel, the Queen Anne in the Garden District and walked over to St. Charles Street, where we ate dinner at Zea. We had an alligator taco appetizer. I had the pesto-crusted trout, which was very good. I think that I will try to make the same thing at home.
Took my parents for a walk to and around the San Carlos downtown area in the morning, after making pancakes for breakfast. Made clay pot ginger pork for dinner.
We spent the first half of the day finishing up wallpapering the guest room. It was just in time, because my parents arrived at SFO for a two week stay.
I found that photo 15 in The Atlantic's set of 50-year-old photographs stands out for me, within a collection of moving photographs. It shows a young black woman waiting for service, that was not going to come, at a segregated lunch counter in Alabama. The expressions of the two people in the photograph are striking. I read the black woman's expression, even through her dark sunglasses and the grain of the photograph, as upset but resigned, and welcoming the press attention. The worker, on the other hand, who is turned away but looks at the camera, seems nervous, unwillingly taking part.
I am very likely reading too much into it.
I would get the German chocolate cake, especially for 20 cents.
Today is Kate's birthday (and Valentine's Day). I presented the coat rack that I've been working on, which is functional and only slightly flawed. Some of our friends came to dinner.
I needed some more paint for the project I'm working on, so I stopped by Home Depot on the way into work. I felt like some kind of tagger riding to the office with a backpack full of spray paint cans.
California is the only state in the country where lane-splitting is legal.
[Motorcycle cop Sgt. Mark Pope] realizes that some car drivers see lane-splitters as borderline cheaters cutting ahead of others, but he says the practice is actually safer for motorcyclists than politely staying in line in a lane.
This does not add up. If lane-splitting is safer, then I would expect that all 50 states would be eager to provide these enhanced safety to vulnerable road users.
The OVS talk I'm doing on March 20 is now scheduled.
I went out and bought a mitre box with a saw this morning to work on a birthday present for Kate. I thought it would be good for sawing dowels to length, and it did work well, much better than the small handsaw I had without a mitre box.
Later on, I decided that a drill press would be the best way to do the rest of the project, so I went out to buy one, but the Home Depot a mile away was out of stock (despite showing 2 in online inventory) and it was getting late, so I think I'll end up drilling by hand. I think I've come up with a way to build a simple jig to make that less haphazard, though.
We had two clocks whose ticks can be heard from the kitchen when the house is quiet. This bothered Kate. Tonight, I removed the second hands. On one of them, the hand pulled off easily; on the other one, I cut it off with scissors. The ticks can still be heard, but not easily or from a distance, so it is much quieter.
I spent about 2 hours today solving this regular expression crossword. It was fun, geeky, challenging, and not too frustrating.
Came across an iPhone on the shoulder of southbound El Camino Real in Redwood City somewhat short of Atherton Ave. I picked it up and punched the “on” button, hoping to find someone to call in the address book. It was number-locked, so I gave up and moved it somewhere safer but still easily visible. Before I turned it off, I noticed that a recently received message was visible on the unlock screen: “Bike safely luv.” I hope the owner fared better than the phone.
Stopped by a different bike shop on my way into work. The Breezer Downtown EX seems reasonable.
A coworker moving to Los Altos Hills (which has some of the most expensive homes in the U.S.) tells me that he and his neighbors get two free periodicals tossed into their driveways. One is called “Gentry” and the other is called “Wealth.” Gee, where I live we just get the weekend SF Examiner.
Still looking for a new commuter bike, so I stopped by a bike shop that sells Raleighs on the way home. The Raleigh Clubman looks like a good candidate. It has nice fenders and a retro style that I wasn't looking for but looks nice anyway. On the downside, no chain guard.
Kate ordered a watch from Stauer for me as a Christmas present on Dec. 5. The watch was supposed to be here by Christmas, but it did not arrive. They sent us a postcard in early January saying that they would ship it within 30 days. They sent us a second postcard a few days ago again saying that they will ship it within 30 days.
Kate ordered some T-shirts from threadless. They shipped most of them the next day. Shipping on one was delayed by a week. Without any request from Kate (or indeed any thought of it), they apologized for the delay and gave her a $25 gift certificate.
I know which company we will do business with again.
Now we made it to 3/4 of the guest room. We made one nasty error that I'm not sure how we're going to correct. Oh well, we're amateurs.
Between last weekend and today, we've now wallpapered about 1/4 of the guest room. It looks really nice. Wallpapering is very much detail work.
I couldn't work on the project I was actually supposed to at work, so I spent some time going back through patches that I had posted and had never received reviews. Some of them dated back as far as August.
Code review is a recurring problem for Open vSwitch. The best reviews (that is, the ones that point out the most problems) tend to come from the developers I work most closely with, who have the most experience working on Open vSwitch. But all of those developers are busy all the time with their own work. I'm happy to take reviews from others, but those usually just amount to “Looks good” or “Acked-by: Bob Smith <email@example.com>” without any comments at all. On a nontrivial patch, I often feel that a review like that means that the patch wasn't examined carefully enough, and so I wait for another more substantive review.
I'm not sure what, if anything, can be done. We've joked from time to time about hiring someone just to review my patches. That's clearly not going to happen.
A discussion on the debian-project mailing list pointed out a histogram of Debian developers' ages. I find this result sad. I became a Debian developer when I was a teenager, but the histogram shows no Debian developers younger than 20 years old (other than a few less than 10 years old, which must be data errors). It must be an indication either that Debian is too difficult for young people to join (it is now a long process to become a Debian developer, rather than a simple and quick one) or that Debian is too irrelevant for young people to care.
A week ago Kate and I went to a cooking class together. Tonight we went to a children's cooking class. I think this must have been either very easy or very difficult to put together, since it involved no knives, no heat, and no meat. I did learn the basics of how to roll sushi, which I have never done before.
I've been spending my time in the office working on making Open vSwitch faster at flow setups. I think that I'm being effective, but I'm having a really hard time getting reliable measurements. Even with
ovs-benchmark rate, my best benchmarking tool for this purpose, I'm getting numbers that wander all over the map, from 25,000 connections per second to over 80,000 (!). I'm trying to isolate the reason or reasons why, but it's difficult.
I noticed a long time ago a sign along Alameda de Las Pulgas that had been modified by adding a picture of a lollipop. Tonight I noticed another sign modified the same way along Brittan Ave. The gnomes in Oakland get all the news coverage, but I want to know where the lollipops are coming from.
I spent some time today looking over options for new bikes. REI's Novara Transfer] is very close to what I'm looking for: fenders, rack, front and rear lights, 700C wheels. Its only flaw is the internally geared rear hub. Although I have nothing against internal gears per se, the weak point I've experienced on commuter bikes is the rear wheel: on my current commuter bike, I've gone through five wheels simply through heavy use. When a wheel fails, I don't want to have to find an exotic and possibly expensive internally geared hub wheel.
There doesn't seem to be anything that comes standard with exactly what I want. I think I'll have to buy a touring bike and add my own fenders and rack and lights. Maybe a Novara Randonee or Trek 520.
We discussed with some friends how local restaurants tend to be run by particular nationalities. For example, local donut shops tend to be run by Vietnamese, and according to my sister most Japanese restaurants are run by Koreans. Our friends pointed out one that we hadn't noticed: many local pizzerias are run by Brazilians. Sure enough, when we ordered a pizza later on, it was delivered by a woman in a Brazilian soccer jersey.
The rear wheel on my commuter bike finally broke a spoke, after a few weeks of my attempting to get it into proper shape from a severely out-of-true condition. Time to buy a new bike, I think: this one is falling apart all over.
An article at NPR that I found via slashdot talks about a universal formula for predicting lifespans:
It tells animals for example, that there's a universal limit to life, that though they come in different sizes, they have roughly a billion and a half heart beats; elephant hearts beat slowly, hummingbird hearts beat fast, but when your count is up, you are over.
This made me immediately think of Edith Nesbit's The Phoenix and the Carpet from 1904. I think I must have last read this about 20 years ago, but there's a passage reminiscent of the same idea:
“I am not sick,” replied the golden bird, with a gloomy shake of the head; “but I am getting old.”
“Why, you've hardly been hatched any time at all.”
“Time,” remarked the Phoenix, “is measured by heartbeats. I'm sure the palpitations I've had since I've known you are enough to blanch the feathers of any bird.”
“But I thought you lived 500 years,” said Robert, “and you've hardly begun this set of years. Think of all the time that's before you.”
“Time,” said the Phoenix, “is, as you are probably aware, merely a convenient fiction. There is no such thing as time. I have lived in these two months at a pace which generously counterbalances 500 years of life in the desert. I am old, I am weary. I feel as if I ought to lay my egg, and lay me down to my fiery sleep. But unless I'm careful I shall be hatched again instantly, and that is a misfortune which I really do not think I COULD endure…”
It's a good book and I recommend reading it, especially to any children you know.
Took a class tonight on use of knives in cooking at the San Carlos Adult Center just a few blocks from our house. Chef Steve taught me some things and confirmed that a lot of the techniques I already thought I knew were correct.
I think maybe I need a different chef's knife, though. The one I have doesn't balance as he said one should. At any rate, I need to get this one sharpened.
I just heard a radio ad for a car with the line “…and a vanity plate becomes redundant.” Are they really intending to say that the car makes you look vain?
Solar installation might have finished early today, but I was out when the crew left.
Martin Luther King, Jr. Day. A day off for me.
The solar installer crew arrived today. They started putting up panels on the roof and installed an electrical subpanel next to the house main panel. The job is supposed to be done Thursday.
Kate and I put up the wallpaper border. It was successful and fairly straightforward. I think maybe I will tackle putting up the whole roomful of wallpaper, maybe next weekend.
I went out and bought a bunch of supplies and tools for wallpapering. Tomorrow I will put up the wallpaper border in my office. If it goes well, maybe I will put up the wallpaper in the guest room later, too.
I'm over 60 pages into Le tour du monde en quatrevingts jours on my phone, reading it only in spare moments when I'm waiting for something to finish. I never realized how much time that actually is. It's much more interesting to spend it reading than just waiting.
I found out yesterday that one of my coworkers built a prizewinning maze-solving robot. Awesome.
Made pasties tonight for dinner with beet, parsnip, carrot, and meatball filling. Yum.
We picked up Dracula from the Nine Lives Foundation and brought him home. Since then, he's been hiding in a few places around the house. I guess it will take him a few days to feel comfortable.
I've been invited to give a talk about Open vSwitch at HackerDojo in Mountain View on March 20 at 6:00 pm. Let me know if there's anything you'd like me to cover.
I spent most of the day working on the house. I stripped the wallpaper border in the office, to get it ready to put up the new one that we've had around for months. I replaced a couple of light switches in the older part of the house with more modern-looking ones that match the rest of the switches in the house. I still have one pair to replace, but I managed to crack one of the cover plates I was using as a replacement, so that one will have to wait until I can get another. I also painted a switch cover plate in Cassidy's room pink, at her request.
Kate and Cassidy took me to the Nine Lives Foundation cat shelter in Redwood City to see three cats that they had looked at earlier in the week. We picked out “Dracula,” an eight-year-old black cat that likes to leave its tongue sticking out a little between its fangs. It needs to get a final vet check-up, then we'll get to take it home this week.
The commit that changed the world.
The cake commemorating the anniversary of the commit that changed the world.
The cake commemorating the anniversary of the cake commemorating the anniversary of the commit that changed the world.
I noticed when I was walking my bike through the front gate that, in lowest gear, one of the rear wheel spokes would ping! against the chain on each revolution. This means that the $200+ wheel that I bought last summer is now badly out of true. Going out of true seems to be endemic for wheels that actually get used. It's good that I've learned to true wheels.
The wild pecan rice I ordered, as I mentioned on Jan 6, arrived. I think I might've been had. The package contains a “pecan flavor packet.” I don't think that's the way it's supposed to work.
I noticed that the Android speech-to-text feature works with languages other than English. I played around with it for French for a while. Results on some randomly selected phrases from the Android user interface and the book I'm reading:
“boîte de réception”: perfect.
“nouveau message”: came out as “nouveaux messages,” which is understandable because they are homonyms.
“La Petite Sirène et autres contes”: In three tries, I got “la petite femme et pour ton compte”, “la petite sirène et pour ton compte étang” (?), and what I was aiming for.
“Je veux aller les trouver…”: In several tries I never got “veux,” always “vois” or “vaut.”
“Les habits neufs de l'empereur”: Never better than “Réserver une tomate.”
Either the feature, or my French accent, is awful.
Debian bug #9063 was reported against Autoconf, which I maintain for Debian, in 1997. It is now reported fixed. It only took 16 years…
I learned a couple of interesting things from Professional Cooking today. First, that there is a variety of rice called “wild pecan rice,” grown in Louisiana, with a nutty flavor. It sounds interesting so I ordered some. Second, that one can soak wheat berries overnight and then cook them like rice. I happen to have some around from a failed bread experiment, so I'm soaking them tonight.
Last year I installed a Schlage keypad deadlock on our front door. Because Home Depot screwed up, I had to replace it by a different one later. It's been very convenient, so today I installed another Schlage keypad deadlock lock on a second door. The locks work very well and I recommend them.
But… one of the default 4-digit codes on the first lock was the same as one of the default codes on the third lock. Therefore, I recommend that, if you buy one of these locks, you should program your own codes chosen randomly instead of using the factory defaults.
What made me so angry last night was TurboTax. Kate did our taxes last year with TurboTax. She has a confirmation email from them saying on what date our taxes due would be transferred from our account, with a complete copy of the tax forms. But the TurboTax people never did that, so we got a letter from the IRS yesterday demanding that we file. Kate called up the TurboTax line and they claim that they have no information on our taxes at all.
This is why I, when I did our taxes, always sent the forms by certified mail.
Whatever happens, I'm going to do my best to insist that Intuit pays the interest and penalties. No way it's our fault when they just lose all our information.
I am so angry tonight. I don't even want to talk about it.
Went back to work for the first time in a few days. It feels comfortable.
New year, new title. Last year.