I became a PSPP user today, after being a PSPP developer for almost 20 years. I am using it to analyze data from Open vSwitch deployments at a VMware customer. PSPP worked very well in the main but I have some improvements in mind.
I went to the extensibility “post-meeting” at Huawei in the morning, then to a meeting at VMware in the afternoon, then back home at 3:00 to beat rush hour traffic. I am so tired of driving around! I haven't been on my bike since Monday.
In the evening I finished up the call for participation for the fall 2014 OVS conference and posted it publicly.
I went to the meeting of the extensibility working group at the ONF workday in the morning, then home in the afternoon to wait for UPS to drop off my new laptop. I spent the afternoon and evening working on a paper for NSDI and barely had a chance to turn on the laptop. I did verify that the laptop had the configuration that I ordered.
I went to Keith's farewell lunch, then to the second half of the ONF workday in Santa Clara. I received an award for “outstanding initiative.”
This blog post at popehat is my new favorite article on free speech. Bravo, Ken!
We bought new plates and bowls at Cost Plus World Market. Our old ones, which were a Christmas gift from my mother, though much cherished, were about 9 years old and getting scuffed and stained in places (though not chipped).
My laptop shipped.
I finished up the implementation of footnotes in PSPP output.
We went as a family to the AFS picnic in San Mateo.
My new watch arrived.
I ordered a new laptop, a Gazelle Professional from system76. It is the first time that I have ordered a machine from a vendor who focuses on GNU/Linux.
Coincidentally, my ThinkPad X201 hit 100C last night and went into thermal shutdown. I've had that problem before and solved it by blowing air through the fan to clean it out. It wasn't the reason that I ordered a new laptop—it was because I wanted a faster machine—but it didn't discourage me.
When Lejna went out running this morning, she found an iPhone in the street, so she headed toward the police station to turn it in. Along the way, she found a policeman's badge (!) in the street, so she turned in both of them at the station.
Kate and I had a chance to go out to dinner while Lejna babysat at home. We went to La Tajine in downtown San Carlos. The food was excellent, I recommend it.
My manager, Keith, with whom I have worked for about 6 years at Nicira and VMware, announced that he is leaving for a startup. It is too bad, because he is a great manager for the Open vSwitch team, but I am sure that it is the right decision for him. Startups are just too much fun to pass up.
I got footnote support working in PSPP in all of the output drivers. The rendering could be slightly better in the Cairo driver (there is a little too much space between the footnote marker and its text) but that's fixable. I also need to add tests.
Spent a lot of time working on the yard.
I took a day off work and Kate and I went into San Francisco to the Exploratorium. The last time I went to the Exploratorium was in 2001, so it was very different from the last visit (and in a new location). It was really nice to have a day out without Cassie.
Lejna and I went to see The Spider Woman at the Stanford Theater tonight.
I fixed an oddity in the PSPP OpenDocument output driver that caused Google Drive to refuse to open its output. There are two ways to write the headers for files within Zip archives: the size of the files can either precede or follow the file content. It's slightly better for readers if the size precedes it, but it can be harder for writers if they do not know how big the file is before they start writing it. PSPP took the easier way out and wrote the size following each file. It turns out that Google Drive does not support this form, even though it is a perfectly standard way to write a Zip archive, so I changed PSPP to use the other form when possible.
Back to work after the long weekend.
I've been spending a lot of time working on PSPP lately. I'm concentrating on the output engine. My current project is to add footnote support. I'm running into some subprojects along the way. Tonight, while looking over the output from the HTML driver, I fixed a couple of ugly rendering issues (well, worse than PSPP's normal HTML output).
I discovered that one of the bugs in Firefox OS is losing all of the notes in the Notes app on upgrade, which means that I lost all of my notes on what to write here. Oops.
I am searching for a good Firefox OS podcasts app. I think I might try to add the feature I want to the Podcasts sample app.
I made apple caramel pull-apart “monkey” bread.
Kate and I went to Random Harvest at the Stanford Theater in the evening. It was a good movie despite how people kept falling in love with unlikely pairings.
We went to the Belmont Greek Festival.
My new phone arrived. It is better than I expected, though there are many bugs. I am starting to learn a little about how Firefox app development works.
My phone really does seem to be dying. I hope the new one arrives soon.
Met Luigi Rizzo at work to talk about Open vSwitch on FreeBSD, particularly about netmap and the FreeBSD port of the kernel module.
We met Cassie's teacher at “Back to School Night.” She seems rather traditional and strict.
I am thinking about buying a new laptop. Most of the new laptops have chiclet-style keyboards. I'm not sure whether I can be happy typing on those, so today I ordered a desktop version ($10) to find out.
I made good progress on the NSDI paper today.
My phone is dying, and I'm not really happy with how non-free Android is these days, so I ordered a Firefox phone (ZTE Open C). I am not sure whether it will be a good phone, but I'm willing to suffer a few bugs and maybe even do some development, and for $60 it's hardly a big risk.
I went to VMworld today. Ethan and I went out in the evening.
Kate and I woke to the Napa earthquake at 3:21 am. The house shook gently for about 10 seconds. No damage.
The earthquake reminded me of my arrival in California back in 2001. I picked up my key and some information at the Stanford graduate residences. I read the sheet on earthquake safety as I walked over to my new apartment. It said, among other things, that one should have lips or rails along shelves to keep items from falling off. I then saw that none of the shelves in my apartment had rails or lips. It found that telling of how Californians really regard earthquakes.
There was a story in the paper about police uniform-carried cameras and how police often forget to activate them at important moments, even though when activated the cameras can go back 30 seconds from the time of activation. It made me wonder why the cameras do not listen for gunshots and automatically activate themselves.
I applied commits to PSPP to implement nested tables in output. They've been a long time coming.
I've started listening to hour-long French podcasts. Mostly, Cultures Monde from Radio France. I'm picking up more of what I'm hearing now.
My paper for NSDI is coming along. I have several pages of text, though most of it is rough.
I made etouffée for dinner. I've made better, but it was still pretty good.
This site is fun: codefights.
Lejna's bike was stolen. I couldn't feel too angry because it was old, had probably 25,000 miles on it, and always seemed to kill off rear wheels (I went through I don't know how many of them, spokes breaking like mad no matter how high- or low-quality a wheel I bought).
I picked up Lejna after class in the evening.
Kate donated $1000 to the dig fund of an archaeology professor she remembered from Stanford, who is now at McMasters in Canada. It's nice to be able to help people out.
I've been listening to more French podcasts on the new earbuds I bought. I think I'm picking up more.
Lejna's first day of classes at College of San Mateo. She did not make it home until 11:30, even though her classes end at 9:20, because of the lousy bus schedule. That is too late, in my opinion, so I am going to go fetch her on Monday and Wednesday nights from now on.
I spent a frustrating time with a stud finder, trying to find a stud in a plaster wall. No luck. After some Internet research, I found out that a regular magnet is a good way to find studs in pretty much any wall. It worked great for me: just take a powerful handheld magnet and sweep it along the wall until it sticks in place to a nail behind the plaster. Then vertically move the magnet until you find a second nail, and so on until you can draw a vertical line through them and have a good idea of the center of the stud. It worked the first time for me.
I made lasagna for dinnner. One of my favorites.
We booked a trip to Sarajevo and Paris for December. To work on my French, today I started listening to podcasts from Radio France. It's difficult. I guess I'm picking up only maybe 10% of the words, so far, but I feel like I can improve.
Lejna and I rode our bikes up to Ralston Avenue to see whether it was practical for her to catch the bus from there to College of San Mateo. It didn't seem so bad to me but I don't think she is enthusiastic.
Kate went to a women's hockey try-out night. I think she is going to sign up for hockey.
I received the letter describing my bonus for the first half of the year.
Kate and I went out for dinner with Justin and Margaret and Ethan and Elyse at Gary Danko. The food was good but the service was very impressive. I'm sure this is the most expensive meal I've ever eaten, by a factor of 5 or so.
Kate came into VMware in the afternoon for a concert by Sara Bareilles.
I timed both directions for my commute. 37:22 in, a new record by 51 seconds, and 37:50 home, which I think is also a record but I don't know by how much (maybe as much as 2 minutes?).
We picked up Lejna from the airport in the evening.
I timed my commute home. 39:16.
Picked Kate and Cassie back up from the airport in the evening.
I went to San Francisco in the afternoon to hang out with my friend Mike Dalton. We met up with more of his friends later on and went to see Guardians of the Galaxy at the Metreon.
I invited Ethan and his girlfriend Elyse to dinner. I made another batch of chicken bastilla, which was again very good. After dinner we used the firepit to roast marshmallows.
Kate and Cassie departed for Legoland in San Diego.
Kate and I went to a cooking class in the evening. We made fresh pasta with a couple of our friends.
It feels like I'm biking faster now that the bike is in better shape. I'll have to starting timing my commute again.
I took my bike to the VMware on-site bicycle repair guy. He replaced the chain, the rear cassette, the middle front chainring, and a shifter cable. The bike computer reads 14,500 miles, so the cassette and chainring lasted approximately that long (although they should have been replaced some time ago). The bike runs much better now.
I sent out an implementation of the OpenFlow 1.3 “table features” request for Open vSwitch. At one point, I had been under the impression that it was optional, so Open vSwitch 2.3 claims to support OpenFlow 1.3 even though it does not implement this request. Oh well, Open vSwitch 2.4 will have it.
We ate dinner with our friends at Shiki Bistro in San Carlos.
We hosted our third annual cooking party at our house. My Moroccan chicken bastilla won.
Finally managed to get some work done this week.
I signed up with the on-site bike repair to get my bike serviced on Tuesday. First time I've tried this—hope it works out.
The final day of meetings ended with a “service learning” event. We assembled bikes for children.
In the newspaper, the end of the Click City serial was terribly conventional and disappointing. I am sorry that I bothered to follow it the whole time.
First day of 3 solid days of meetings. Most of it was not too relevant to what I do. The most interesting part was a discussion of the idea of what I thought of as an “international exchange” program for VMware engineers: send an engineer from one site to another for a period of time.
Meeting about Hyper-V support for Open vSwitch.
Kate and Cassie went to see the new “Planes” movie in the morning. They took Cassie's friend Lorelei with them.
I attached a lock to the fire pit, to prevent unauthorized people from (easily) lighting it.
The fire pit was delivered.
We went swimming at Lucila's apartment in the afternoon. I wore my new suit, which I was a little nervous about, but no one seemed to notice.
We made smores in the new fire pit in the evening.
I worked from home.
The big comfy chair we ordered for the bedroom arrived in the afternoon. It is very nice. I had my doubts about whether the complicated pattern would fit in, but it does.
I sent out a plan for how to integrate Hyper-V support into Open vSwitch.
It's two years today since the public announcement of VMware acquiring Nicira. Time flies.
This article titled “Inside the Mirrortocracy” bothers the heck out of me. It's not anything like how we hired for Nicira.
I broke a saddle rail on the way into work.
My new VMware bike jersey was available when I got there, so I picked it up. It fits well; I'm glad, because I just guessed at the right size.
I spent all afternoon installing a ceiling fan in my home office. I did not know in advance that I would have to reinforce the ceiling. That job turned out to be straightforward, but not fun due to the tight quarters in the attic and especially the heat in the attic. I swear it's 140F up there.
I took Cassie to dinner and then to the classic Sound of Music movie at the Stanford Theater in Palo Alto.
Worked on PSPP a lot of the day, fixing some cell breaking corner cases.
I made pistachio lamb skewers for dinner, which were a hit.
We ordered a fire pit for the front yard.
I made enchiladas with the sauce from a few nights ago. It turned out pretty well, even though I forgot a couple of ingredients in the sauce. I used this recipe, because I really really love the author Jacqueline Higuera McMahan's mole recipe. I think that next time I will add ground beef, even if it is sacrilege.
The entire Networking and Security Business Unit at VMware went to see the Transformers movie in the afternoon. It would have been better if it had been an hour shorter.
We went to a square dance at Peninsula School (Cassie has been going to summer camp there for a few weeks).
VMware hosted a “family movie night” at its Palo Alto campus. We watched Despicable Me.
I made enchilada sauce from a batch of peppers.
Kate went to a seminar in the evening while Cassie and I had a little time together.
The benches were delivered. They look good.
I made deep dish pizza for dinner. My first try at this style of pizza. Worked out pretty well.
We've had some trouble lately with the smoke detector above the stairs. False positives galore. I thought it was just a cheap one, so I replaced it with a Nest, but after some time it started giving false positives too. After a little research I figured out that it is too close to a ceiling vent. This morning, I removed it and installed a duplex receptable in the ceiling box instead, and then installed the upstairs wireless access point into that. Now I need a new battery-powered Nest to put somewhere else near the top of the stairs, away from the vent.
We went to Half Moon Bay and ordered some stone benches for the front yard.
I fixed some PSPP bugs tonight.
The new HP printer arrived. I installed it. It prints beautifully.
I also installed a new wireless access point upstairs. Kate was getting very annoyed with having two wireless networks with different (nested!) NATs. The routers that I was using didn't seem capable of not doing NAT, so I ordered a new one. It set up very easily once I realized that the “range extender” mode wasn't going to be practical and switched it to acting as a regular AP with a power line Ethernet backhaul.
I had a dentist appointment in the morning.
On the way from the dentist to work, I was rear-ended by another cyclist while waiting for a pedestrian to cross ahead of me. I was thrown to the ground and scraped both shins and an ankle. The cyclist said that he hadn't been watching where he was going. Asshat.
In the afternoon I figured out that the memory corruption problem that I'd been tracking down with Open vSwitch on XenServer was actually a bug in glibc.
I took the afternoon off work to watch the Brazil vs. Germany game. I haven't watched any other full games in the World Cup, but a friend of mine invited us, so I went to this one with her and Kate. I chose the right one, with Germany's historic 7-1 victory over Brazil.
Kate and I installed a new TV upstairs in the bedroom. We have not had a TV in the bedroom before (or more than one TV in the house). We will see how it goes.
Kate had a total meltdown today regarding printing. Apparently Windows 8 just cannot handle printing to our printer. I ordered a new HP color laser. I am looking forward to having a PostScript device in the house again.
We got 2 tons of gravel from Lyngso and filled in the keyhole in the front yard. It looks great.
We went to a party at Raquel's house in the afternoon.
We went to the Palo Alto Chili Cookoff in the afternoon. We've been 3 or 4 times before, but not recently. It was a fiasco. There were thousands of people waiting for, initially, a dozen booths with chili. By waiting for 3 hours, I managed to taste 4 cups of chili. By the time I was done waiting that amount of time, most of the booths had already closed. My wife only managed to taste one kind of chili.
There was supposed to be ice cream tasting too, with three booths. My wife waited for an hour in one line, but it closed before she got any.
In the end, we paid $15 that should have entitled us to 10 tastes of chili and 5 tastes of ice cream. We got 5 and 0, respectively. But “no refunds.”
What a ripoff! We will not go again.
Martin wrote me the most amazing recommendation I've ever seen. He said that he would have made it stronger but that people who don't know me might not believe it then. I'm not sure I believe it now.
I had the longest conversation with another cyclist on the way into work. We crossed paths at Brittan and Alameda and kept up a conversation all the way into VMware, at which point she continued to Cupertino.
A couple of my coworkers found themselves discussing some feature of the Pentium Pro. They couldn't settle it, so they emailed Pat Gelsinger, who managed PPro development at Intel and is now the VMware CEO. Pat wrote back with a detailed answer within a day or so. Amazing!
I found an upstream kernel bug while debugging a problem in Open vSwitch.
Kate and Lejna went to the Pride parade in San Francisco. Cassie and I were stranded at home all day because Kate did not leave any kid car seats at home.
In the evening Lejna departed for Bosnia. She will be back in August.
After that, I spent the rest of the evening cleaning up after the damage that Lejna had done when she made us a big dinner Saturday night. She's a good cook, but lousy at cleanliness.
A very busy Saturday.
I spent a long time leveling the big dirt in the front yard with a shovel. I also found a good way to keep the landscape timbers in place, by attaching them to each other with metal connectors.
I made a big marble maze for Cassie by using my router to make grooves in 2x2s.
All of us went stargazing at Brittan Acres in the evening. I was not very impressed by Saturn, but globular cluster M-19 looked really cool through a night vision lens (with an ordinary lens I thought the lens was just smudged).
I went out with Ethan after work. The rest of the family was in San Francisco.
I was feeling sick, along with everyone else in the house, so I worked from home. I reviewed the Cloudbase port of Open vSwitch to Hyper-V.
I spent the whole day reviewing code, including the VMware port of Open vSwitch to Hyper-V. Incredibly productive.
Jesse committed the MPLS kernel patches to the Open vSwitch repository. This is the end of an era.
On the way home I passed by a cyclist with a huge pack attached to his bike. I asked about it and he said it was a massage table. “I used to be so jealous of guys like you who can commute by bike, so I figured out how I can do it myself.” Nicely done.
Finished up assembling the keyhole shape in the morning. They are slightly wobbly in places, so we bought some mending plates to fix them to each other in the afternoon.
We took Cassie to a birthday party at the Bay Club (formerly Pacific Athletic Club) in the afternoon. I had not been there before. Seems like a nice place, but too expensive to join.
I had my first positive experience soldering in a couple of years. I figured out that my troubles had been due to failing to properly tin the tip, and that the reason I couldn't tin the tip was that it was too corroded. I spent some time sanding and cleaning the tip of my soldering iron, and that fixed the whole problem.
Kate and I assembled a “trash amp” like the ones on sale at Maker Faire a while back. It worked! (I tried not to act surprised.)
We have a number of blank wallplates in the wall that faces the garage and the driveway gate. I've trying to find a use for those spaces. Recently it occurred to me that we could put garage door and gate openers in those spaces. So I spent some time this morning desoldering the switches from a garage door opener and soldering jumper wires to them. I attached the jumper to a standard Decora wallplate switch and got it working. I haven't put it in the wall yet, since a toggle isn't really the right interface. Instead, one wants a momentary contact switch. I placed an order with Home Depot for two Decora momentary contact switches, which should come in in about a week.
Kate and I went off together to explore in town. We visited a gallery of local artists (we bought a small print for Cassie).
I've made wonderful progress on PSPP output formatting this week. Now I just need to make a proper patch series.
We went to the Taylor Creek state park in the morning. The most impressive part for me was the “stream profile chamber,” which is a room at the level of the stream with one wall made of glass so that you can see everything happening in the stream.
We went on a trail ride at a horse ranch in the early afternoon. I was surprised that it seemed that all the employees at the ranch were female.
Kate and Lucila and I went to a comedy show at Harvey's in the evening. It was fun but I've seen better shows at Rooster T. Feathers in Sunnyvale.
I made waffles for breakfast.
We went to Heavenly and took the gondola ride up the mountain. At the top, we had lunch, which was good but overpriced. The highlight of the day was the ropes course there. Tons of fun.
We left for Tahoe about 11:30, with Cassie riding with Lucila's family. We stopped for lunch about 1:00 and made it to the cabin on Nadowa St in South Lake Tahoe about 5:00. It was a beautiful place, four bedrooms including one with a triple bunk bed for the kids, with a hot tub just outside the back door.
Pam and Dave left for Portland early in the morning. Kate and I took a quick trip to Half Moon Bay after that to pick out benches for the front yard.
In the afternoon we went to Alcatraz. As we got off the boat on the way back, the Bosnia vs. Argentina game still had about an hour left. We walked along the Embarcadero looking for a place to watch it. We found ourselves at the Hard Rock Cafe, where the food was lousy and overpriced.
As I started driving us home, we came across a bunch of loud drunks carrying a Bosnian flag toward the Caltrain station. Kate made a quick judgment call and asked me to pull over. She and Lejna jumped out to follow the Bosnians, and I drove Cassie and me home. Kate and Lejna came home via Caltrain, sitting with the drunk Bosnians. Lejna gave one of them a fake phone number.
Lejna's graduation party.
Kate's parents Pam and Dave arrived from Portland in the morning to join the party. I spent the morning continuing work on the front yard, moving most of the large dirt pile in the front to various places in the back. Dave helped a bit.
Lucila drove with Lejna to Santa Clara to pick up Bosnian food for the party. They returned just as our first guests were arriving. The party lasted through about 3pm.
We drove to Half Moon Bay to show it to Pam and Dave, then we had dinner at Buck's. Not my favorite place, but at least there's stuff to look at.
Friday the 13th, although I didn't notice at the time.
I reviewed an amazing number of patches today, trying to catch up before next week's vacation.
My day was OK, but everyone else in the family seemed to have a lousy day. They were really grumpy in the evening.
Back to work.
We received a letter from Stanford Federal Credit Union. Let me quote it in full:
Protecting the privacy and security of your personal information is one of Stanford Federal Credit Union's top priorities. We are equally committed to open communication and transparency with our member-owners, which is why we are contacting you today.
We want you to be aware of a situation in which a staff member mistakenly sent some of your personal information to one individual not employed by the credit union. This error was discovered within minutes, and we immediately worked with this individual, a long-time credit union member, to ensure the data was destroyed before being viewed. This incident occurred on April 30, 2014, and the information included your name, address, member number, tax identification number, loan offers and credit information.
While we are confident this information was never seen by unauthorized individuals and you are not at risk, we feel it is important to communicate with our members in any situation involving their information or accounts. I also want to emphasize that our electronic systems were in no way compromised and your accounts remain secure.
We take this issue extremely seriously, and apologize for this internal error. While we have state-of-the-art technology and security systems in place to protect our members, human error is an unfortunate aspect of doing business. We have addressed the issue internally and taken a number of steps to ensure this type of incident cannot happen again, including installing additional software systems and instituting new operational protocols.
Although we do not believe this incident poses a risk, it is our philosophy to help members protect all of their information in the best way possible. To ensure that you have the most up-to=date security for your personal information, we would like to offer you a complimentary one-year membership in Experian's Alert program. Please see the reverse side of this letter if you would like to sign up for this service.
Please don't hesitate to contact us at firstname.lastname@example.org or 888.723.7328 if you have any questions or concerns. We place the highest value in the trust our members have in their credit union, and have worked hard over the last 55 years to earn your confidence. I want to again apologize for any concern this situation may cause you, and assure you that we will continue to take whatever actions are necessary to protect your personal information.
The letter was not signed.
This is the fourth major screw-up that SFCU has made in the last year. The others:
Reduced the credit limit on our Visa card due to a “periodic review,” despite the fact that we had plenty of money in our accounts and paid off the balance in full at the end of every month. They apologized and “fixed” it then, too.
Took over a week to send us a new Visa card when the other one was exposed by the Target breach (presumably), even though we were leaving on a trip during that time. We heard from other people that their credit card companies overnighted new cards to them.
This one I still can't believe. Kate's debit card was about to expire, mine was not. They sent me a new card, I cut the old one, and we left on vacation to Chicago a day or two later. In Chicago I attempted to use the card, no dice. Kate's card also wouldn't work (it had expired). We called them when we got back. Their explanation: they had sent Kate a new card with my name on it. I couldn't use it because it had her PIN. They told me to “use my old card” which obviously I couldn't do because I had destroyed it, on their own advice. I am flabbergasted at the idea that they can screw this up. Is there someone sitting there manually typing names and account numbers onto cards?
We are looking for a new bank. This one does not appreciate our business.
Kate and I ate breakfast at the hotel, then we walked along West Cliff Drive to the state park. We ate lunch at the Crepe Place (recommended by my coworker Justin). We went downtown and looked through the shops (we bought some things at Camouflage). Finally we drove home with our one-day excursion without kids at an end.
I went to work by train and then after work met Kate in Mountain View to eat at Vaso Azzuro. The two of us drove to Santa Cruz after dinner to check in at a bed and breakfast there, the West Cliff Inn. We walked along the wharf, then walked downtown, had a beer at an Irish pub there (the “Poet and Patriot”).
I bought more timbers to finish up the keyhole shape. Yesterday I had tried cutting the 6x6s with my large pullsaw. It was an ordeal, especially toward the middle of the cut when the thin kerf tended to squeeze together in the wet lumber but the wood hadn't been cut through enough to be able to flex a little wider. Today I bought a cheap conventional handsaw. It made the remaining cuts not easy but much easier. Best investment I've made on this project.
All of us went to the Serbia vs. USA water polo match at Stanford in the afternoon. Afterward we went to dinner at the Euro Cafe, a Bosnian restaurant in Santa Clara.
I spent the morning and early afternoon working on the front yard, beginning to outline a keyhole shape in heavy 6x6 timbers. I was stomping on the shovel so hard that I busted my boots: the sole came off, since it seems that it was only attached by some kind of adhesive. I threw them out.
I went to Lejna's graduation at Sequoia High School in the morning.
I worked from home today, to make it to an appointment in the afternoon to discuss estimated taxes with my tax advisor. I actually met with someone different from my usual guy, at the same firm. Whenever the subject of the usual guy came up, the person would say that “he is… not available.” I wonder what's going on. It's normal for a tax advisor to take a lot of the year off, but then I'd expect them to just say that he was on vacation, without the awkward pause.
The Chronicle did not give the results of any of the state or local propositions this morning. I am irked.
I found out online that the open government initiative, proposition 42, passed. Good. I found the initiative somewhat confusing, but the endorsement from the Electronic Frontier Foundation was good enough for me.
Kate and Lejna both got tattoos today. I think they egged each other on.
There is a Muni strike on in San Francisco. It seems rather rude to stage a transportation strike on a voting day.
I've heard from two people now that the pens that I had made for the Open vSwitch hackathon are now their favorite pens. I am surprised, since I chose them mainly because they were cheap. I got 150 of them for about $100 including customization and shipping.
VMware has started requiring employees to show their badges to get the subsidized prices at lunch. I do not like this: it is inconvenient and I doubt that many people would really drive out of their way to campus to eat in the VMware cafeteria.
I had lunch with my old friend Dale Walter in Fremont.
We had dinner with our friends Grace and Roberto at their house in Cupertino. Their house is close to the Apple “spaceship” construction site, so we walked over their and peered over the fence. I thought it was interesting, but Kate and Cassie were really bored.
I spent a lot of the day digging up more of the “keyhole” space in the middle of the lawn. That is really heavy work. I think that another day of work will finish up that part of the work.
I went to a meeting at Stanford involving Dan Pitt. I was surprised to learn after the meeting that Dan mostly gets around by bike and Caltrain.
Noiro Networks threw a party for apparently everyone they know at their offices in Sunnyvale in the evening. I expected at least a token attempt at recruiting, but there was none. I had a good time. They say they'll do another one soon. I hope I get invited.
Why does Google's self-driving model car have windows? A car without windows could be more energy-efficient, since it could have better insulation and not be a greenhouse on wheels.
I reduced my commute time to 38:13.
Lejna's student visa for next year was approved!
We spent the day in Santa Cruz as a family. We went on rides and played games in the arcade at the boardwalk and ate lunch at an extremely slow Mexican restaurant across the street. My favorite part was the overhead tram ride. The weather was beautiful all day. Everything in Santa Cruz was open, despite the holiday.
A cousin of mine died. She was only 43. I had not seen or talked to her for about 20 years. The story I hear is that she refused to go to the doctor even though she was obviously ill, and eventually died at home as a result. I am sad.
Spent a lot of time working on the yard again. Went to Home Depot and bought a bunch of 6x6 landscape timbers, then dug out 6 inches along the sidewalk and put the timbers in there, to keep the 5-inch deep compost and mulch that we've put on the lawn from spilling onto the sidewalk. This sounds easy, but the digging was real work, and 8-foot 6x6s weigh a ton.
We had our friends the Johanssons to dinner.
I finally nailed a stupid bug in Open vSwitch today, with Ethan's help.
Cassie and Lejna and I watched “An American Tail” in the evening.
I matched my 38:30 commute record.
In the evening we went to an open house at Cassie's school.
We went to Lejna's math award ceremony in the evening.
I've been timing my bike commutes over the last week or so. The first day it was over 42 minutes. Friday, I got it down to 40:00. Today, I brought it down to just 38:30.
We learned that Lejna will receive a math award.
I'm starting to wonder whether some of the Open vSwitch code is getting close to my own level of cleverness. This could be a problem; as Brian Kernighan said, “Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?”
I hate clever code. I used to love clever code. Now I love clear code.
We went to Maker Faire as a family, via Caltrain. Cassie and I came back together, leaving Kate and Lejna to stay for a while longer. Cassie had been really good all day, putting up with lots of walking, so on the way home we stopped at Starbucks to get her a steamed milk. We picked it up and continued to walk home.
A few yards down the sidewalk she told me it tasted funny. I tasted it and agreed. We went back to Starbucks and asked for a new one. It took a few minutes.
Cassie tasted the new one. Still definitely not steamed milk. This time, we watched the interaction between the cashier and the barista. The cashier wrote “SM” on the cup. The barista then interpreted this as “skinny mocha.” We spoke up and got it right, finally.
We'd been planning to go by the grocery store, but after 30 minutes of trying to get a steamed milk, we decided to just go home.
The San Francisco Chronicle reported today on a controversy at a Catholic School in San Francisco. The passage that raised my attention was buried as the second-to-last paragraph:
“Straight, gay, bi, transgender, all that, they're all welcome at Sacred Heart Cathedral,” he said. “At the same time we're going to be clear in terms of being a Catholic institution, what the Catholic Church teaches and how do we live out that faith in a meaningful way and in a supportive way with all of our students.”
What is this issue that commanded such a statement, that raised issues of faith and Catholic teachings? Was it related to abortion, or to ongoing scandals among the priesthood, or another hot-button religious issue? Was it a gay or transgender issue? Was it some issue of high social import?
No. The issue at hand is that a female student submitted a yearbook photo that portrays her wearing a tuxedo instead of a dress. This is against the school's policy, and the school has refused to include the photo.
Sheesh. As popehat.com says, “Govern yourselves accordingly!”
From the mailbag, out of the blue, a few days ago:
With regards to your post on “Imposter Syndrome”—I was wondering—I have doubts as well about my abilities but when I see the titans around me I tend to shrivel up inside and wonder “Why bother? I'm mediocre at best.” You have worked around titans (granted you are very very good—one of the best) but I was wondering how do you deal with it? Given that I'm 30 years old and I've had a very average life even through I've worked really really hard and to the best of my ability I can't help feeling, “This is it, this is the best I can do.” Rationally I know this just limits me, emotionally I feel defeated.
Any ideas on how to cope with this?
Pleased to meet you.
This is a difficult question. I know that I get into a funk sometimes, when I think I've hit a plateau or started to decline careerwise or skillwise. Sometimes that lasts a few days, or even a few weeks. But I'm highly self-motivated to build things—usually software, but once in a while something else—and that always comes through in the end. Not everyone is motivated the same way, so I don't know whether it works the same way for you, and if not I can't offer any advice, since I only know myself.
I also don't know whether you are talking about feeling occasionally down, or whether you feel like that all the time. If it's the latter, I wonder whether it has anything to do with what you find yourself working on. Are you working on something that you're really happy about? If not, maybe it's worth considering finding a project that is really exciting. That could be a hobby project or looking for a new job. As for jobs, I talk to a lot of people who tell me they want to work for a startup—but they're working for VMware or another large company instead. It's usually for no good reason, but just because they assume that working for a startup entails risk. Sure it entails risk: if it fails, you might have to find a new job. But that's all. By my lights, that's worth it to do something exciting.
Do we need some kind of virtual switch or software switch standardization forum? I am not sure that ONF is serving this group's needs.
Saul Griffith gave a talk in the morning. It was incredible. I wonder if he's hiring?
Following the final keynote in the afternoon, I walked along Folsom Street to see what there was to see. I stopped in at Wicked Grounds to see what there was to see. I had a soda.
I chaired the first paper session today at RADIO, which means that I gave 10-second introductions of each of the speakers and moderated the questions. Apparently a number of people know me, or are better than me at recognizing faces, because I received several compliments in person later, even though I did not say my name and it was not announced or written down anywhere.
Benjamin Zander, director of the Boston Philharmonics symphony, gave an inspirational talk in the morning. I initially sat a few rows back, but then he asked for people to fill in the front row, so I moved up. He gave me a hug.
Planned to meet Martin for drinks in the evening, but it did not happen. Disappointing. Also planned to meet Rupa, of Codechix, but she was not feeling well. Also disappointing.
The first day of VMware's annual “RADIO” internal conference, at the Hilton in San Francisco. I took Caltrain up to the San Francisco terminus and then walked to the hotel.
In the evening I went out, with a large group, to a local bar named Local Edition.
Went to a Mother's Day breakfast at the Omelette House in San Carlos (maybe Belmont?).
In the evening, Kate and I went to a Marcia Ball concert at Club Fox in Redwood City.
Kate went to get a second dump truck load of wood chips, which we spread on the yard to cover the remaining bare spots.
I worked from home, helping out in Cassie's class for an hour in the morning. I posted an Open vSwitch patch series to enable OpenFlow 1.4 safely.
I made pasta with meatballs, plus baked chicken, for dinner. The chicken was a surprise hit. Everyone liked it.
Went to the farmers market downtown after work. I tried to meet up with the rest of the family for dinner, but I arrived when they were just finishing, so I went off to eat by myself. I decided to try Lulu's, one taqueria where I'd never eaten before. I was not impressed. The horchata tasted chalky and, on the soft tacos, the tortillas tacos tasted of raw flour and had too much lettuce. I tried albanil, a meat that was new to me, but it was undistinguished. With the choice of taquerias around here, I think I'll stick to the other ones.
I did a lot of work toward prototyping OpenFlow 1.5 (which is still only a set of proposals).
On my way home another cyclist came up behind me and said, “Wanna draft?” Well, I'm not a racer, but it's hard to refuse that. We traded taking the lead back and forth for about 20 minutes, then I fell helplessly behind, exhausted. I was so tired that I actually made it home in a little more time than usual because the remainder of my ride was much slower. Still, I'd do it again.
We have a new intern on the Open vSwitch team, from Italy. I had a conversation with him over lunch. I asked whether he was interested in returning to the US for a full-time job after his internship. He said that he hadn't planned to but that VMware was such a nice place (even after one day) that he was seriously thinking about it now. Now that is nice to hear; sometimes I wonder whether the Bay Area is such a great place.
I fixed more bugs in CROSSTABS.
Kate and Cassie were out most of the day. I worked on PSPP, fixing up bugs in the CROSSTABS procedure.
I made orange roughy for dinner.
Cassie and I went to Home Depot in the morning for their monthly kids workshop. The project this month was a stand for a flowerpot, as a Mother's Day gift. They even threw in the flower!
Cassie and I went out biking with our friends Cassidy and Stella, along the Bay Trail. We were out for hours. I was really impressed with the girls. We all biked about 6 miles! A couple of years ago it was difficult to get Cassie to go more than about one mile.
We ate dinner at Bistro Vida in Menlo Park, not a new restaurant but new to me. I ordered escargot to introduce it to the girls (Kate had also never had escargot).
I had lunch with Dan Talayco in Palo Alto, talking over what might be worthwhile next steps for OpenFlow on physical and virtual switches.
When I came home, I noticed that only one of the two cars was in the driveway, so I was surprised to see that everyone was home. “Where's the blue car?” I asked, and Kate said back, “I thought you drove it to work,” but of course I drive to work only maybe once a year and today wasn't the day.
This led to a bit of a panic as we all tried to remember where we'd last seen the car. I had no idea. Did someone steal it? Then Kate said, “I bet I know…” and we walked down the block to Cassie's elementary school. Sure enough, Kate had driven some materials over there earlier, then forgotten that she had taken the car and left it there for a day and a half.
Sheesh. The fact that we can forget where we leave one of the cars may be a good sign that we don't need two of them. We were, after all, a one-car family until late 2013.
Kate and I went to a party at the German bar downtown, that we had signed up for at the San Carlos Education Foundation auction back on March 1. Sausage and beer. I didn't really hit it off with anyone socially.
I made a lot of progress on benchmarking the cuckoo hash implementation I've written for Open vSwitch. Preliminary results seem good:
Single-threaded insertion takes roughly 2x the time of a regular hash table.
With 16 threads, an operation mix that is 99% reads and 1% writes is over 10x as fast as with a regular hash table. This is because the cuckoo hash never requires locking for read-only operations.
I visited Noiro Networks in Sunnyvale to talk to them about the Open vSwitch development process. I went in thinking that I would just say, “Well, it's really similar to the Linux kernel dev process, y'know?” and then we'd swap anecdotes about coworkers for an hour. But it turns out that there are developers out there who have never done Linux kernel development. (Yes, really.) So I came away with a lot of mental notes on what to add to the Open vSwitch CONTRIBUTING file.
We got a full dump truck load of wood chips, 4 cubic yards, from Lyngso, and spread it over about half of the yard. Probably need two more loads to finish the sheet mulching process.
We had dinner at Blue Line Pizza with friends.
There's a passage from Neal Stephenson's Snow Crash that comes to mind from time to time:
Until a man is twenty-five, he still thinks, every so often, that under the right circumstances he could be the baddest motherfucker in the world. If I moved to a martial-arts monastery in China and studied real hard for ten years. If my family was wiped out by Colombian drug dealers and I swore myself to revenge. If I got a fatal disease, had one year to live, and devoted it to wiping out street crime. If I just dropped out and devoted my life to being bad.
Lately it's been coming to mind pretty often. Except that I'm 35. I guess I'm ten years slower to catch on than the normal man.
Same shuttle driver on the way in this morning. Still giggling. What is going on?
We had dinner with Lucila and her family at Jeffrey's Hamburgers in Menlo Park.
I had continued to take Caltrain to work all week just for a change of pace. On the VMware shuttle back to the train this evening, the shuttle driver kept having fits of giggles. It was very strange.
Finally feeling more normal. It was a good thing—Keith woke me up with an urgent customer issue. I jumped on a conference call and managed to narrow down the problem. I spent much of the rest of the day fixing the bug.
Still feeling sick.
Back from vacation at my new office in VMware's “Hilltop B” building.
I was feeling much better Sunday, but today it was bad again. I took Caltrain in.
Ken Thompson gave a talk at VMware. I listened to it from my office.
I made tacos for dinner and went to bed, hoping to feel better in the morning.
I felt much better this morning.
We flew home. In our trip through the airport, my only chance to buy any lunch was at a McDonald's next to our gate. I ordered a Big Mac. When I ate it later, I was shocked at how blandly gray and flavorless it was. It had been so long since I'd had a McDonald's hamburger that I'd assumed they were better than they really are.
In the evening I hung Cassie's swing back up. The rope had broken at her birthday party, so I put on a new one and tied it according to the recommendations in Ashley's Book of Knots. I also fixed Lejna's sandals by riveting the leather back together where it had broken.
I woke up feeling sick to my stomach. At first it seemed like a hangover, but I had only had two beers the whole previous day. It only got worse as the day went on.
We went out to Deerfield on a Metra train to see Kate's Tiny Treks boss at her house. We ate lunch with them.
When we came back to the hotel in the evening I was in bad shape. I lay in bed reading while everyone else went out. Kate and Lejna went out to a Bosnian restaurant. The others went swimming.
I went with Kate and Cassie as far as Navy Pier, then I went off by myself to see what there was to see in the city. I struck off randomly across the city on foot. I spent the entire morning walking. I ate lunch at a chain restaurant called Hannah's Bretzels, which is a sandwich shop that makes its sandwiches on pretzel rolls. After that I walked to Wrigley Field to meet the others for a Cubs game.
It was bitterly cold in the stands. We were sitting in the shade, and it was windy. My dad and I made it through six innings (with the Cubs down 3-0), and then we left for the hotel.
We at dinner at the House of Blues “Crossroads” restaurant a few blocks from our hotel.
Kate and I went out by ourselves in the evening. We visited Taboo Tabou (I bought a couple of books), then went to The Comedy Improv X Files at the Playground Theater nearby. We finished the evening with a drink at the brewpub around the corner from the hotel.
We went to the Field Museum.
I took Cassie to the hotel pool in the afternoon.
We ate dinner at Giordano's.
In the evening, Kate and Lejna and I went a Second City show, American Mixtape. It seems that Second City now has several shows, different, in town. This one had less improv than I was used to from years back, but it was still fun.
We visited the Museum of Science and Industry in the morning. My favorite exhibits were a replica of the Wright Brothers' first plane, all of the train engines, and the submarine.
Kate took us around the University of Chicago campus (where she went to school) in the afternoon.
We ate dinner at Rainforest Cafe.
We went up the Sears Tower first thing in the morning, following breakfast. We met my friend Olivia for lunch at a restaurant in Greektown. Back at the hotel we met up with my parents, who had just arrived from Michigan by train. All of us went out to movies (three different movies; my dad and I saw The Grand Budapest Hotel, which was hilarious). My dad and I had time for one round of bowling before the movie.
The four of us flew to Chicago for vacation. We arrived about 8 pm. We had a very cold walk from the subway to our hotel.
Kate and I continued sheet mulching the lawn. We spread a layer of builder's paper over the entire lawn, then a second layer of compost. This took most of the day.
We had dinner with Stella's family.
Kate and I spent today getting a layer of compost spread over the entire lawn (except for the part where I'm digging out the sod). Kate went to Lyngso for a dump truck full of compost. We dumped it out on the lawn (it did not slide out on its own—I had to climb up in the back of the truck and push it out with shovels and brooms) and then laboriously spread it all out.
In the afternoon I packed up my things for the move from the old “Prom G” building at VMware to the new “Hilltop B.” The movers will actually move everything over the weekend.
Kate and I went out by ourselves in the evening to the new Blue Line Pizza restaurant in San Carlos. It's a Chicago-style pizza place (named after the Blue Line trains in Chicago). Recommended.
I had a really hard day. When I got home, I tried reading to feel better, but I was reading the depressing biography of Kurt Vonnegut (And So It Goes), so it didn't help. I switched to a short story collection by Lawrence Block, but every story involved someone's gruesome death. Some days you just can't win.
I was reminded today of Obfuscation of The Standard XOR Encryption Algorithm, a comically bad paper on encryption from an ACM student magazine. I still can't believe that got published. Even a student magazine should do some review.
For those who don't have an ACM Digital Library subscription, or can't be bothered to log in, here's a summary. The author proposes to strengthen “encryption” that XORs 128-bit blocks with a fixed key by also rotating the fixed key by a random number of bits in each block, and sending the number of bits rotated along with each ciphertext block (!).
It's this kind of naive nonsense that results in vulnerabilities like the SPSS encrypted data file vulnerability that I reported last year.
I had a conversation with a coworker today that made a bit of a mark on me. My coworker has worked in industry a lot longer than I have, at a number of networking companies. He feels that Open vSwitch development is much more careful than the other products he has worked on. Sloppiness reigns, I guess, through out most of the industry, coding standards are ignored if they exist, code reviews are perfunctory, unit tests are rare. It made me feel good about our practices, but worried about the rest of the industry.
I had dinner at Tied House in Mountain View with a few Debian developers who needed their keys signed. I took Caltrain instead of biking today, which worked out really well: walk to San Carlos train station, Caltrain to Palo Alto, VMware shuttle to the office, work, VMware shuttle to Mountain View, dinner, Caltrain to San Carlos, walk home.
Cassie's birthday party, at home.
I spent a long time digging sod out of the front yard, flipping it over, and depositing it in a sunken spot on one side. This is a first step toward redoing the entire front lawn.
We went to a Sharks game in the evening. The Sharks lost badly.
Today was too broken up by running around dropping people off and picking them up to feel like I had been effective. I also felt terribly tired, especially in the evening. I think I might have a cold coming on.
Consider this situation. A server maintains some database whose contents changes at some unpredictable rate. A remote client that wishes to maintain a replica of some part of the database connects, retrieves an initial snapshot, and tells the server to send it updates as the database content changes. This works well in common cases where the database changes relatively slowly. It fails when the database changes quickly enough that the client cannot keep up or when the network connection to the client has less bandwidth than needed.
I've encountered this pattern a few times in my work over the last few years. I suspect that it comes up all over, and that maybe the solutions are formalized in some networking papers or texts that I've never read. Anyway, I'd like to take this space to explain the solutions that I've used so far.
To start, buffering updating to send to the client, while necessary, is not a solution, because a slow client and a quickly changing database can mean that the required buffer space grows without bound.
One can attempt to limit the rate of change of the database. I have not found this to be a satisfactory solution so far. One reason that it is unsatisfactory is that one slow client can essentially prevent the database from changing at all.
Another approach is to drop the connection to a given client when the data buffered to that client for updates exceeds the amount that would be required to send a complete copy of the entire database. The client then reconnects and obtains a new initial snapshot. This approach worked well for some time for the OVSDB server in Open vSwitch. However, we eventually came upon a few situations where it caused real problems. For example, when the database continuously changes at a high rate, this can cause slow client connections to drop almost immediately after retrieving their initial snapshots. In turn, because OVSDB connections are used for operations other than monitoring, this meant that slow OVSDB clients couldn't accomplish any of their goals other than monitoring.
A more effective approach responds to the socket buffer to a given client filling up by tracking the aggregate changes to the database relative to the client. That is, if a datum in the database changes more than once, track only the final change; if a row is modified and then deleted, track only the deletion; if a row is inserted and deleted, pretend nothing changed at all; and so on. This aggregate cannot take more space than the larger of the original or final size of the database, so as long as the database itself is bounded in size, it is practical to maintain it. When space frees up in the socket buffer, the server sends the client the aggregated change. This is the strategy now used in the OVSDB server in Open vSwitch.
A final approach is the one used for flow monitoring in the Open vSwitch main ovs-vswitchd process. (I originally designed this as part of a Nicira extension to OpenFlow. It was later standardized as part of OpenFlow 1.4, so you can read that specification for more details.) When buffered changes grow above a threshold, the server sends a “paused” message. After that, the server stops sending updates for rows that are added or modified. It does continue sending updates for deletions of rows that had already existed before the pause. When the client catches up, the server sends “add” and “modify” updates for rows that were added (and not deleted before catching up) or modified, and then a “resumed” message to let the client know that it has caught up again.
I went to a meeting at the ONF offices in Menlo Park. It seems that we're making some progress; I had my doubts before.
None of the April Fool's jokes today really impressed me. I enjoyed the “ClosedStack” one about as much as any of them.
Someone dumped an old, banged up screen door on my front lawn. WTF?
I painted the shelves for the plant stand. It took longer than I expected, but I got it done. I really wanted to assemble the whole thing, but it's going to rain tomorrow and the paint says to avoid getting it wet for 48 hours after painting. So after it was dry to the touch I stacked it in the garage, with little shims in between to avoid sticking, to dry for a full two days.
For dinner, I roasted a turkey, baked a casserole dish of cornbread dressing (after baking the cornbread itself), and made a recipe for “Hungarian potatoes” that I found in Professional Cooking. Everyone agreed it was all delicious. I think Kate is going to make a turkey pot pie out of the rest of the turkey tomorrow.
In the morning I designed and built an outdoor stand to hold plants out of 2x4s. It is huge: 3 feet tall, 3 feet deep, and 6 feet wide. It looks like a set of bleachers, with three 1-foot deep shelves each set one foot higher off the ground. Initially I had planned to make the shelves out of 1x6s from an old fence, but when I put them on the supports it was obvious that kids would try to climb on them and that my 1x6s would instantly snap when they did that. Kate and I decided to get 2x6s instead, which should be strong enough to actually use the stand as a set of bleachers.
Kate and I went out to test drive used trucks. We tried out a Ram, a Silverado, and an F-150. I liked the Ram and would have supported buying it if Kate had not had reservations. The Silverado seemed to shake a lot at speed. The F-150 was too old (2003) and reminded both Kate and me of our grandparents.
On the way back from the test drives we bought the 2x6s and a couple of quarts of yellow and green paint for the stand. In the evening Cassie and I painted the supports.
I met Simon Horman at the office. He had been in town for the Linux Collaboration Summit.
Today's session was less attended, with perhaps 20 or so attendees. I started out the day with a more detailed (and recorded) version of the talk I had given the day before.
Partway through the talk, I realized that I had briefly flashed up on the screen a file that contained my email password in plaintext, so immediately after the talk I changed it to a new randomly chosen password. (Fortunately, I use a given password at only a single site, so I only had to change one password.) Just after I did that, I realized that although I had stopped recording first, I hadn't disconnected the projector, so everyone in the room had been able to see the new one too. So then I disconnected the projector and changed the password one more time…
Today was the first day of the Open vSwitch Hackathon that Kyle Mestery and I organized. We began with a logistical introduction from Kyle, followed by an introduction to Open vSwitch development by Justin. At this point, I expected everyone to break up into teams to work on individual projects. The audience, however, was mainly Open vSwitch administrators, users, and generally interested people, not primarily developers as I had guessed it would be. So, instead, I ran a demo of Open vSwitch development while Justin led a discussion of potential OVS support for L4/L7 services in a separate room.
Maybe as many as 40 people attended today.
In the evening about 10 of us went to Pedro's, a local restaurant, for dinner.
Yesterday I sat down to eat lunch in the company cafeteria and found myself struck by an odd thought: did I pay for this? I thought back and couldn't remember doing it. I checked my credit card statement last night and there was no charge from the cafeteria for the day. I paid for it today instead (although a few coworkers suggested that I shouldn't bother).
We got our electrical bill for the last year. $220 for the whole year. I guess the solar panels do pay off.
On my ride home I spotted the coolest license plate I've seen in a long time: H+H=HE. On a Ford Fusion!
We went to the garden show at the San Mateo fairgrounds.
Kate and Lucila and I went into San Francisco for dinner and Chelsea Handler's show at Davies Symphony Hall. The show was fun, but I don't think it's twice as much fun as the much cheaper and easier-to-get-to comedians at Rooster T. Feathers in Sunnyvale. I think parking in San Francisco cost as much as two show tickets in Sunnyvale.
I had been expecting a package from Amazon, but it hadn't showed up. I checked Amazon's website this morning and it said that Fedex had reported “invalid address, undeliverable.” That doesn't make sense, because we get mail and packages all the time, so I called Fedex. The guy on the phone told me that in fact the package had been turned over to them in a damaged state and that they'd handed it back to Amazon. I could not get the guy on the phone to tell me when they were going to actually report that to Amazon instead of “invalid address.” I had to go back to Amazon and explain the problem. They sent me a new package. I'm still not sure whether the problem is on the Fedex end or the Amazon end.
Spent some time in an online webex today. Why can't it scale the image to fit my screen? It is a pain to pan around.
Kate and I went out to Rok, a restaurant in Sunnyvale, using a gift card that a friend gave me for my birthday back in October. This restaurant has the gimmick that they bring out your entrée, only partially cooked, on a superheated slab of volcanic rock, and then you finish cooking it yourself with a knife and a fork. This was fun for a minute, but then I realized that a skilled cook in a kitchen can do a better job, especially for the price that Rok charges. The service was also very slow: we were there for almost 2 hours.
After dinner we went out with our friends Grace and Roberto.
Reading the latest Communications of the ACM, I found a paper that cites one that I coauthored years ago. I always enjoy that, it makes the painful paper writing process seem like it was more worthwhile.
Three important meetings today, all with exactly the same content. Sigh.
We had my coworker Justin and his family over for St. Patrick's Day dinner. Even though we've lived here over 18 months now, it's the first time they've made it here.
I went to a party at a friend's house. I was surprised to meet Peter Anvin there, who I've known as a Linux developer for many years. (I doubt he knows me.)
Wrote my self-evaluation for what I've done at work from January 2013 until now. I ended up being impressed; I've done more than I thought lately. Here's part of what I wrote:
Considering the 2141 patches applied to the Open vSwitch “master” branch between 1 Jan 2013 and 14 March 2014, I was involved in about 70% of them:
I committed 749 patches of my own.
I reviewed and committed about 484 patches written by others.
I reviewed about 289 patches written and committed by others.
(All of those numbers are approximate.)
Came across a quote from White House CTO Todd Park today that seemed a little odd to me:
There is strong evidence that when affordable healthcare isn't exclusively tied to employment, in more instances people choose to start their own companies.
But, if you start a company, you've always been able to get healthcare for employees, as far as I know. For example, when I was involved in the founding of Nicira, the rule that I remember hearing was that you could get group coverage if your company had two or more employees, and in fact I believe that's how many we had initially when we got healthcare there. So the quote is puzzling to me in that context.
I spent all day in the program committee meeting for VMware's internal RADIO conference. It is the only program committee I've been on. The format was simple: discuss each of the papers that received high enough scores and come to consensus on whether they should be given a long talk, a short talk, or a poster. I think we discussed over 50 papers with an average discussion of 8 minutes or so, each.
I finished reading Fuzzy Nation. Awesome quick read. I give it 9 out 10. It ended long before I expected, though, because the publisher stuck a preview of a different book at the end. I hate that, not because I object to previews but because I like to know how much of the book is really left.
I joined a meeting at the ONF office in Menlo Park. I had shown up a week earlier, misunderstanding the date. Each time, I rang the doorbell to their locked lobby area, but no one showed up, and each time I then walked around to the unlocked employee entrance and walked through a large open area full of employees to find where I was going. Each time, no one even looked up. Weird.
The wood had swollen on the side gate where I installed a deadbolt lock a while back, so that it no longer fit past the strike. I fixed it this morning by chiseling away a small amount of material, maybe 1/32” or 1/16” thickness.
We went ice skating again, this time at the rink in Redwood City with a friend of Cassie's. Last time it was great fun, but this time I found my skates painful. I switched to different styles a couple of times but it did not help much. Too bad.
I added a x86-64 build to the PSPP autobuilder.
For perhaps the first time, I agree with Caille Millner.
The second ONF Workday was even duller than the first, but at least it was shorter.
Back to the Hyatt in Santa Clara today for the first ONF Workday. I had a really hard time staying engaged, since most of what was said seemed either obvious, irrelevant, or wrong. I think that these huge meetings with hundreds of people are a waste of time. It is much better to get together a handful of people to work out a real solution to a real problem than to run 2-hour PowerPoint presentations.
I gave a 10-minute introduction to Open vSwitch in the “extensibility” session. I worked from handwritten notes, not slides, according to my preference. I felt pretty good about that when the next two speakers had technical difficulties. After that session it seemed that I had become a bit of a minor celebrity. I had a hard time getting to lunch because people kept coming up and wanting “just a minute” of my time. I also felt a little odd when one guy told me that he thought I'd be older and another said that he thought I'd gotten a bit fatter (really?).
Kate and I went to another cooking class tonight at the San Carlos Adult Community Center. Tonight the class focused on Irish food for St. Patrick's Day. My favorite was a beef stew that we baked with pastry on top in individual cups. There was also an amazing three-layer brownie.
I managed to finish up and post a version of my own homegrown RCU library for Open vSwitch. Somehow I expected RCU to be complicated and difficult to implement, but when I got down to it there just wasn't much there. The most difficult part was in fact making sure that the code worked and was reasonably type-safe with all four of the compiler variants supported by the OVS atomic library.
I spent all afternoon through late evening at the Hyatt in Santa Clara. The afternoon was occupied with the ONF workday “premeeting” in which we discussed various aspects of OpenFlow that have now slipped my mind. In the evening Justin Pettit and I met Neela Jacques, Brent Salisbury, Chris Wright, and some others in the Hyatt lobby. Neela graciously bought us drinks and sushi. I think that Neela had previously been very nervous about VMware's level of commitment to Open vSwitch and related software. I think that Justin and I managed to reassure him.
I spent most of the day in bed recovering from Spring Fling. Next year I will drink much less.
I did manage to read most of a book that I was interested in. It's pleasant enough having a day just for reading. I don't remember the last time I managed to do that.
This evening was Spring Fling, the San Carlos Education Foundation's big annual fundraiser for the San Carlos public schools. Since it is the first year that we have a child in the schools, it is the first year that we attended. It was a pretty fun time and I drank way too much.
We went to a birthday party for one of Cassie's friends in the evening at the ice skating rink in Belmont. It was a blast. I spent an hour and a half skating, some with the kids, some by myself. It took me most of that time to remember that I can actually skate pretty competently, but by the time I did the rink was filled to bursting with small children. I want to go skating again sometime soon.
Last weekend I finally finished building up and sanding the spackling on the wall next to the thermostat, and then painted it. It looks good, finally. I also spent a few minutes looking over the rest of the wall, fixing up a bunch of nicks. While doing that I found a couple of places where someone had drawn small flowers on the wall in black pen. No one admits to doing it. Very puzzling. I painted over them.
There is a lot of confusion going around lately about naming around Open vSwitch:
OpenDaylight has some kind of interface to the Open vSwitch Database (OVSDB). The name for this interface is, apparently, just OVSDB. This leads to statements like this one:
@PariseauTT @cswolf Is VMware committed to contributing to OpenSource communities like OVSDB, OpenStack and OpenDaylight?
Of course, on the face of it, the OVSDB part of that is ludicrous: I, a VMware employee, am practically the sole contributor to OVSDB. But people go around saying this kind of thing anyway because they have named something else OVSDB.
Tilera has launched an Open vSwitch based product that they call OVS:
Tilera Launches Open Virtual Switch Solution (OVS) to Accelerate NFV and SDN
Tilera Corporation, the leader in high-performance, power-efficient computing, today announced the availability of TILE-OVS, an optimized Open vSwitch (OVS) offload solution for network functions virtualization (NFV) deployments in data center and telco networks.
I think it's awesome that so many groups and organizations are launching Open vSwitch related products. Please continue to do so! But, as a favor to me, if you launch something related to Open vSwitch, please give it a distinguishing name!
There's a discussion going on internally at VMware that irks me a bit. Donald Knuth's visit sparked an interest in literate programming. I've actually done some literate programming—GNU libavl is a literate program, as is a smaller program that I wrote as part of a course project in college—so I have some interest in joining the discussion. But the discussion is being held under the auspices of a women's programming organization. Ordinarily I wouldn't let that stop me from chiming in, but the note about it heads me off with its final sentence:
Naturally, there is nothing stopping anyone else from creating and running their own groups, so, if that works, that's great (attempt to mitigate the inevitable comments about “non-inclusion” of everyone etc. etc.).
I guess I'll just stay away.
Lejna showed me that some of the shelves I put up in the kitchen are tippy. I think that some of the holes need to be a little deeper; the pegs don't go in all the way.
We spent most of the day with our friends Cassidy and Raquel and their daughter Stella. We also dropped by an AFS event so that Lejna could pitch the exchange experience to other potential exchange students and host families.
We had our friends Brandy and Olof and their kids over for a great dinner. My favorite parts were the braided, cinnamon sugar topped bread that I made and the pineapple that I grilled. Brandy and Olof brought lots of food too; my favorite there was the mojitos.
I need to work on my grilling. The hot dogs and chicken was OK, but the lamb chops were too charred.
Donald Knuth came to VMware for a question and answer session in the afternoon today. I arrived at the large conference room about 10 minutes early and it was already above capacity, with probably 200 people in a room meant for 150. Half as a joke, I climbed up on the top of an upholstered bench to see better. When a bunch of other people followed me on up, I realized that it wasn't a joke anymore. I didn't want to feel responsible for (potentially) wrecking furniture, and I hate crowds, so I went back to my office to listen on the phone.
I'm in the middle of reading One Day at Kitty Hawk, a book about the Wright brothers' invention of the airplane. This book is like the ultimate engineers' dream. There's nothing like coming up with an entirely new theory—and having to disprove old theories as wrong—and daring to demonstrate it at great personal risk, and amazing the entire world.
Lejna told me a few days ago that the brakes on her bike rubbed, and that it was so bad going uphill that she couldn't ride it at all. I took a look at it and, after trying a few futile adjustments, discovered that the axle inside the rear wheel was broken. I've never seen an axle break like that. I decided to just fix up a different (and nicer) bike for her.
I made and installed shelves in the kitchen using the plywood I bought yesterday plus a roll of veneer edging.
Lejna and I ate dinner at Lobster Shack in Redwood City. I expected a great meal because of the reviews online and the Zagat rating. At half the price, I would have considered it a good meal. But $19 for a “lobster roll” at a place with no waiters or tablecloths seemed too much.
I picked up Lejna from the airport.
Yesterday I built a rack, out of 2x4s, for carrying 4x4 sheets of plywood on the top of the car. Today I took it over to Woodcraft and tried it out with a sheet of 3/4-inch oak. It worked great.
Lejna and I ate dinner at Red Hot Chilli Pepper in San Carlos. It is a nice place and we will probably go there again, but I would not take anyone who does not like spicy food.
I spent some time this last week implementing an optimistic concurrent cuckoo hash based on Doug Zhou et al, “Scalable, High Performance Ethernet Forwarding with CuckooSwitch” and Bin Fan et al, “MemC3: Compact and Concurrent MemCache with Dumber Caching and Smarter Hashing.” Based on my experience, I have a recommendation for anyone else who is working on the same thing. I recommend that you use breadth-first search to find a path for rearranging keys. The CuckooSwitch paper does not mention the algorithm used, but libcuckoo, by the authors of CuckooSwitch, uses breadth-first search. In my first attempt, I used a random walk algorithm instead, but this is hard to get right efficiently because a random walk often loops through the same node, which means that to actually execute the rearrangement in reverse one must keep track of all the changes already made (or prevent loops). Breadth-first search, on the other hand, always generates a shortest path, and no shortest path will contain a loop, so one does not need to make any special provisions in that case.
I drove Kate, Cassie, and Lejna to the airport for a weekend trip to Portland and Seattle. I got the house to myself for the weekend.
I spent some time studying Ashley's Book of Knots, specifically splices. I had never spliced ropes together before. From the book, I successfully practiced the short splice and eye splice with some sisal rope that I had left over from redoing cat scratchers.
Valentine's Day and Kate's birthday.
A few days ago I already gave Kate her birthday present: a weathervane that I put up on the top of the garage, where it is visible from the street, the yard, and our bedroom on the second story of the house.
A few weeks ago the city mailed out brochures about the new local bus schedule, which they call a “flexible” schedule. This week new “FLX” signs went up along the route. This reminded me what a misnomer the name is. It is not flexible: to get bus service, you have to call and request a pickup the day before.
I helped sell hot dogs and popcorn at the school book fair in the evening. We collected over $600, although I think that about half of that went to costs.
I helped at Cassie's school again this morning, even though I had not planned to. I am getting a little tired of helping out there because it is so similar every time. Every time, there is some formulaic art r craft project that I help the children to complete. The first few times I remember helping, the art project was very free-form, so that the children could do it their own ways. That was interesting, because there was a lot of variation between one child's project and the next to hold my interest. But the last several of them have been very rigidly defined, and so all there is to see is where the children didn't follow the plan well: defects, instead of creativity.
The POSIX iconv function is really subtle. I found (and fixed) a bug in GNU PSPP's usage of it that had been there for years because we hadn't tested converting away from any encodings like windows-1258 that use combining diacritics.
FedEx “tracking” is so useless. It mostly tells you useless things, like that a package left Wisconsin 5 days ago.and has not shown up anywhere since then.
I keep hearing the usual jokes about forgetting to write the new year on checks. But who is still writing all these checks? I write less than one a month.
My colleague Joe Stringer reminded me on our walk over to lunch about the Ryu controller's OpenFlow tests, so I took an hour or two in the afternoon to write and post a patch that makes it easy to run these tests against development versions of Open vSwitch. My thanks to the Ryu developers for making this easy to script, even for a person like me who knows little about Ryu or Python testing frameworks.
I finally polished up the IPv6 support patch from Arun Sharma at Calsoft and pushed it to the Open vSwitch repository. Thanks Arun!x
This was a very long day. I spent the morning at a “100 Days of School” party in Cassie's classroom, helping children string 100 Froot Loops on necklaces. I had a series of meetings the rest of the day at work. Then I hurried home to make it to a cooking class that Kate and I went to at the San Carlos Community Center from 6:30 to 8:30. We went out for drinks with some of the other students afterward.
I finally checked in major improvements to the MPLS implementation in Open vSwitch. This has been a long time in the making. Many thanks to Simon Horman, without whose patches and prodding I probably wouldn't have ever gotten around to taking care of this.
Kate and I taught Cassie how to play “Carcassonne” a few evenings ago. We've had the game out before, but only used the cards to make layouts, never to play a game with scoring. We used pretty much all the rules, only simplifying slightly by leaving out farmers. Cassie was good at it—she ended up winning—but she got pretty cranky toward the end. Kate said that she could see Cassie concentrating hard to figure out how to play.
Kate and Lejna were out all evening shopping for Lejna's dress for winter formal. Cassie and I spent the evening together until bedtime. She started me out on the wrong foot by being cranky, but we managed to have an OK evening together.
It rained overnight. Keep raining!
It's my dad's 70th birthday. Happy birthday, Dad!
I took Cassie to Home Depot for their monthly workshop for kids. We made a racecar and painted it.
I went over to REI for a new blinky.
I spent most of the day working on house maintenance.
Riding into work, the blinky on the back of my bike fell off its clip. The next three cars behind me ran directly over it and shattered it into a million pieces.
Lejna left for the weekend for some AFS student orientation. We have to pick her up in the North Bay on Sunday.
I finished making the rack to go on a shelf in the kitchen. It functions, it looks just the way I intended it to look, and its many imperfections are not casually visible. The wood and its finish match the kitchen, too, but somehow it does not match the overall look of the kitchen. Kate and I think that may be because it sticks out too far on the shelf. We are discussing different ways we could redesign it.
I'm on the VMware RADIO conference program committee, so today I started looking through papers. I spent about 2 minutes on each of 67 of the submissions. I recommended about 25 of those for “light review” only, because they were not up to snuff. Disappointing.
We finished and submitted our paper for the VMware RADIO conference. It is a much better paper than I expected. Initially we were just writing it because management wants everyone to submit papers. Our paper was really just about performance improvements in Open vSwitch. No research there. But after writing for a while, and getting some feedback, I realized that there really is enough novel work in the Open vSwitch classifier and flow cache to warrant a paper, so we pivoted and wrote only about that. It's pretty good, I think.
A while back I was reading something in the newspaper about getting kids involved in some kind of craft. Some way into the article, the reporter had clearly gone out of his way to find a contrary viewpoint. The quote still bothers me: “These people are trying to conscript kids into the Maker Movement.”
People like to make things. Kids like to make things. The fact that adults are helping kids to make things doesn't have to be ascribed to any “Movement.” I like to make things, too, and that's basically what I like to do all the time, whether I'm making things with words or code or wood or food or something else. Most of the rest of the stuff I do is just taking breaks. I don't have to relate to any “Movement” to make things, and I'm not sure that I really do relate.
So, to whoever said that: stuff it.
Back to work after the weekend. I spent most of the weekend either working on my research paper or procrastinating on it. I'm a champion procrastinator when it comes to papers. I can sit there right at the keyboard and think of anything else. Paragraphs and individual sentences or even words can take ages.
I registered Cassie for the Home Depot kids workshop on Saturday. We're making a racecar. I think it'll be fun.
In the morning we went to a jigsaw puzzle competition. We were a few minute late. When we arrived, the organizers had given away our reserved spot to someone who had not reserved one and no copies of the competition puzzle were left. We were disappointed, but we took a different puzzle and spent a few hours on it. It was a very difficult puzzle and we did not make much progress, so we dumped all the pieces back into the box and went home.
Kate took Lejna dress shopping for the Sequoia winter formal in the afternoon. Cassie and I played together at home. We went for a bike ride in the neighborhood.
I found some moments to work on my kitchen shelves during the day. I tested the stain that I had bought. It matches the existing cabinets well (Lejna says “perfectly” but I am not sure).
In the evening I worked on my research paper.
I am so far behind on reading and processing bug reports on the PSPP mailing lists. To PSPP users, sorry about that. I am in the midst of writing a research paper and a document on Open vSwitch fields, there is a reorg going on at work, and I am spending a lot of time working on carpentry and other projects around the house.
Give me a few more weeks and I'm sure things will turn around. In particular, the rest of the family is going on a trip in a few weeks, and that will give me some uninterrupted time to work.
Writing research papers is the hardest professional activity I do.
The phrase “flat-screen TV” is my new pet peeve. It's meaningless because no one sells the old curved screen TVs anymore.
I am working on a document on OpenFlow and Open vSwitch fields. I've started sending, to people involved early on in OpenFlow, a draft of a section on the history of OpenFlow fields. If you want to review it, let me know.
Rev. Martin Luther King, Jr. Day, a day off work.
We have some cabinets that were installed in the house in funny places when we moved in. We removed them and they were in a closet until now. We are trying to better organize the garage, so this morning Kate and I installed one on the wall (no drywall there, making it easy to find the studs). Later, I made a shelf to fit inside (on little metal shelf holders).
The shelf is made from the same oak veneer plywood that I'm using for the kitchen shelves, so I spent some time experimenting with the veneer edge banding that I am going to use there. I applied it to the visible edge with an iron, using aluminum foil to protect the iron, then I trimmed it with a trimming tool I bought last week. I was worried that it would be difficult or not work well, but in fact it took only two or three minutes total (not counting ten minutes waiting for it to cool between ironing and trimming) and was not tricky or error-prone.
I also replaced a rack in the garage that was in fact an adapted curtain rod by a proper closet rod, using a shelf bracket with a hook at the end. I intend to put a shelf on the bracket also, but did not do it today.
I installed the outdoor speakers. They sound good. I still need to go back and caulk around the holes to make sure that water can't get inside the stucco.
With the table saw, I cut my 4x4 sheet of plywood to the sizes I need for the kitchen shelf, and fit them together. It was not perfect at first, which I think is because I initially forgot to lock down the bevel on the table saw and it wandered about 10 degrees from vertical during my cuts. This made the pieces not square, so I had to trim off some on the sides carefully with a hand saw. Anyway, I managed to fit everything together acceptably.
I spent some time experimenting with the router. I think that it will do everything I want.
After talking to my dad, I decided that the kitchen shelf project would be much easier if I had a table saw. I've been delaying on buying one for a long time, because they're scary, but I had spent a long time reading reviews and had a good idea of what I wanted, so I went out and bought a Bosch GTS1031. This model is portable, with a tough metal frame and handles, and storage for all the components inside the frame. I can store it vertically under my bench and pull it out when I need to use it.
I read through the manual and practiced using the saw.
I bought a Porter-Cable router, model 960, and some bits, for a project I'm working on to build some shelves in the kitchen. I used the Home Depot gift card my dad gave me for Christmas. Thanks, Dad!
Had dinner with Justin and his family, Jesse and Ethan, and Ethan's girlfriend, at Justin's house.
There's been horrible turmoil at work this week. A bunch of decisions came down from on high. They are not necessarily bad decisions, but they are big changes and not communicated well. I have hardly managed to get anything done this week.
I released GNU PSPP 0.8.2.
Over the last few days I've noticed an occasional mysterious beeping when I'm outside. Tonight I figured out that, when I replaced a smoke detector inside the house, I put the old one in the garage but forgot to remove its battery.
We wrote and mailed thank-you notes for Christmas gifts in the morning.
In the afternoon I went to Woodcraft to buy some wood for a project. I bought a 4x4 sheet of plywood with oak veneer to match our kitchen cabinets. Putting it in the car, I found that a 4x4 sheet of plywood fits, diagonally only if one is willing to push and to scuff the interior trim. Next time I will take the old car, and a rope for the roof rack.
There's a little playhouse for kids in the back yard. It hasn't seen much use because it had a wasp problem. We were working on that, and Kate went out there to check on it today.
We don't have a wasp problem anymore, because the playhouse has bats now. For me, this posed the question of what do we get to eat bats, but Kate decided to buy a “bat house” instead and somehow try to coax the bat into living there. We'll see.
I managed to expand a 1-gang low voltage box for speaker wires in our TV room by a 2-gang box with extra wires for our outdoor speakers. I think this is the only time I've put a hole in a wall and not regretted it.
Here are the books I read in 2013, along with the year that they were written and, in some cases, my rating on a scale from 1 to 10:
Erica Jong, “Fear of Flying”, 1973, 3.
Jules Verne, “Le tour du monde en quatre-vingts jours”, 1895.
Hans Christian Andersen, “La Petite Sirène et autres contes”, 1875.
Jules Verne, “Le Pays des Fourrures”, 1873.
Garrison Keillor, “Pontoon: A Novel of Lake Wobegon”, 2008, 5.
Jules Verne, “Cinq Semaine en Ballon”, 1863.
Jules Verne, “Les révoltes de la Bounty”, 1879.
Richard Henry Dana, “Two Years Before The Mast”, 1840, 8.
This list is shamefully short. It is shorter than my list for any other year that I've kept one and, probably, for most years that I have not written it down. I plead, first, that it took longer to read many of them because they are in French and, second, that I spent a lot of time on other hobbies this year instead of reading.
My peak year for reading was 2011, in which I read 61 books. However, I don't want to repeat that year, either, because I think that too many of the books I read that year were simplistic and forgettable. In 2014 I hope for some happy medium.
I've been getting weary of this form of blogging. I am thinking about some alternatives. I might eventually get around to trying one of them.
I'm feeling awfully tired now. I think I need another vacation.
I went back to work.
I dropped Kate and Lejna at “snuba.” Cassie and I went swimming at the hotel for a little while, then we checked out and picked the others back up.
We drove to the airport and flew home. I was pleased that our bottles of rum did not shatter or leak.
The others went to yoga in the morning, while I finished reading Babbitt.
We spent the day driving the opposite direction around the island. Our first stop was the Makauwahi Cave Reserve archaeological site, over a rutted dirt. We spent some time walking around and talking to the docents. I took some photos of the collapsed innards of the cave.
Afterward we drove toward Waimea Canyon on 552. We stopped at a lookout point and bought some exotic fruit, including fresh coconut meat (pretty much flavorless) and rambutan (pretty good). We made it up to the nature center and museum a while later and took a very short hike.
On the way home we stopped at a ruined (never completed, in fact) Russian fort.
We ate dinner at Keoki's again.
We ate breakfast at a Whole Foods-like grocery store near the hotel. The food was very good, but it was also very expensive.
We spent the day driving counterclockwise around the island from our hotel, almost to the point where the road ended, and back again. The highlight of the morning was the Kamokila Hawaiian village, which recreates the buildings in a historical Hawaiian village, with explanations.
We drove through Princeville and ate lunch in a shopping center there. Just past Princeville was Hanalei, the town from the “Pete the Magic Dragon” song. We stopped at Tunnels Beach to watch surfers on huge waves. Across the street from the beach was a huge cave. We only walked into the large outer chamber, because we did not have a flashlight, but other visitors told us it went back much farther than that.
We ate dinner at Rum Fire, the hotel restaurant. The food was better than Brennecke's, but didn't measure up to Keoki's.
We drove a short distance from the hotel to set out on a 3-hour guided adventure. Our adventure began by kayaking down a river, which was very still and quiet. About 45 minutes later we landed on the bank and hiked along a small stream to see waterfalls and eat a picnic lunch. We hiked back to our kayaks, pausing for Lejna to jump into the water from a rope. Back at the river, we were picked up by another guide with a power boat. We went back to the hotel.
We went to a luau at the Koloa rum plantation in the evening. Kate and I had a chance to taste the rum. The Koloa dark rum and spiced Hawaiian rum were both amazing. We rode a train around the plantation, ate our dinner, and watched the show, which featured an amazing fire act.
I ate breakfast at the hotel restaurant, to try it out. I decided not to go back again, at $30 for a basic breakfast served slowly. I walked along the beach and climbed on some lava rocks. I managed to slip and cut my legs and feet badly. I rubbed dry sand on them until the bleeding stopped, then I walked over to where the others were taking a “surfing lesson,” which turned out to mean sitting on a surfboard in the pool.
We discovered that the hotel's “kids club,” described in the guidebook, did not exist.
We had heard the locals talking up the Koloa Fish Market restaurant, so we went there for lunch. It turned out to be a tiny hole-in-the-wall with food that is cheap (the cheapest we've seen!) but tasty. It didn't have any seating, so we sat on the steps of the building next door while we ate.
We spent some time shopping. I bought a Hawaiian shirt.
Kate and I went for a scuba lesson in the afternoon. The instructor basically handed each of us a mask and said “put this on and dive.” It was easy—I always had this idea that scuba was difficult and technical—and fun, and left me wanting more. Kate sounded like she wants to get certified when we make it back home.
We ate dinner tonight at Keoki's Paradise, which turned out to be a great place. We might go back again another night. The highlights for me were my monchong fish with lemon butter sauce, and the carrot-cinnamon-pineapple muffins served before dinner.
After dinner we walked around the shopping center that Keoki's was in and bought a few souvenirs.
New year, new title. Last year.
We took off for Kauai in the morning. I both started and finished reading Red Shirts on the plane (it was disappointing) and started reading Babbitt.
We landed and picked up our bags and the rental car. I drove us to the Sheraton, stopping at a Mexican food truck for a late lunch along the way. We went swimming in the pool and walked in the surf.
For dinner we drove out to Brennecke's, a beachfront restaurant. There had been some confusion about reservations, so we had to wait a long time to be seated. The actual food was disappointing, and expensive.