On Tuesday I’m starting my new job on the Swift for Tensorflow team at Google. Very exciting; a whole new world of adventure after almost 7 years at Apple, where among other things I was extremely cautious—probably more than I needed to be—about making public statements. If nothing else I figured I should post a quick update here, and since I’m feeling a lot less constrained now, you might expect to see a few posts with real content, on a variety of topics.
If you don’t like variety and just want tech quips, follow me on Twitter 😉
Since 2013 I’ve been working at Apple, leading the Swift language’s standard library effort, which means my public statements and participation have been scaled back quite a bit. But I’ll post here from time to time, and if you want to know what’s up, you can follow me @DaveAbrahams on Twitter
In latest news, I gave a talk at WWDC 2015 that was very well-received.
While BoostCon ’09 was awesome, at this point it’s pretty obvious that I won’t be able to report on each day in the detail I started out with. I will try to wrap it all up in one article, soon. Until then, if you’re a programmer type, please have a look at C++Next, a new site I have started about advanced C++.
May 4, 2009
Hey, this is going to be fun! I sure hope people don’t grumble too much about the snow, and that they dressed for the changeable mountain weather.
I hoof it on over to breakfast and get ready for my day. In light of the snow, I take the long way over to the Physics Center, along the road, not through the meadow.
Jeff Garland opens the conference in Flug (“floog”) Forum with his “Library In a Week” project for this year: building a relational database binding library.
Jeff has done a different variation of this series every BoostCon, getting a group together for one hour every morning before the rest of the sessions start, to collaborate on developing a new library. As great as “Library in a Week” has been for everyone over the years, it hits me like a ton of bricks that a working session is no way to start a conference. [Note to self for next year: add a short formal welcome session]
I have some interest in this area, since I recently had to learn more than I ever wanted to about web development, so I had a brush with databases, specifically the Django web framework’s binding library. I volunteered to give an overview the next day of that interface, but sadly became overwhelmed with other conference responsibilities and activities, and was never able to get back to Library in a Week. Sorry, everybody! If someone would like to write a comment about how the project turned out, I’d be happy to approve it here.
Next up, Christophe Henry’s talk on the Meta State-Machine Library in Bethe (“beta”) hall. I’ve been looking forward to this one ever since I saw it on the program. I first learned about Christophe’s work when he contacted me and Aleksey Gurtovoy (my co-author on C++ Template Metaprogramming) about the library he had written based on a simple example in our book. I get similar requests now and again to look at peoples’ code; I usually don’t have the time, and when I do I am usually not impressed, but this time I took a gander, and I was wowed. He had maintained the declarativeness and efficiency of our work and had extended it to cover all the fancy-dancy features that people familiar with the UML state machine specification expect.
Years ago, when the review for the Boost StateChart library was underway, I had pointed to our example as a way of showing that one could write highly-efficient state machines with a declarative syntax, but at the time it was claimed that the advanced features supported by the UML standard (and the proposed library) made such an approach infeasible. I wasn’t happy, but also didn’t have the time or domain expertise to build what I thought would have been an improvement. Since the library would certainly be useful for some portion of the C++ community, it was accepted into Boost; I think I even voted for it.
But, Christophe had taken his knowledge of UML and template metaprogramming, and combined them to produce something much closer to my ideal. Not only that, but it was well-documented and nicely presented. Back to the past present, at BoostCon, I’m looking forward to seeing the details.
Christophe turns out to be an excellent presenter: knowledgeable, entertaining, and understandable without talking down to the audience. He also has an impressive grasp of how crucial abstraction is to the software development process, and a way of explaining it in terms of Model-Driven Engineering from which I have lots to learn.
Still trying to get pictures of everything at the conference, I duck over to Flug and check out Michael Wong talking about the features of the upcoming standard, C++0x. It looks like Michael is doing a great job keeping people engaged, and I know most of this stuff, it seems, from my work on the C++ committee, so I go back to Bethe just in time for the first coffee break.
Next we have the dueling parallel patterns presentations (DPPP). In Flug, Stephan T. Lavavej is talking about Visual Studio 2010’s parallel patterns library. In Bethe, Joel Falcou on an Embedded Domain Specific Language (EDSL) for parallel programming. How do I choose? I figure that pretty soon information about Visual Studio is going to be ubiquitous, but this is probably my one chance to hear about what Joel is working on. So it’s off to Bethe.
Wow, this is getting long. More on Monday to come tomorrow…
Sunday, May 3: Sunday, May 3: I wake to an overcast sky and look around, half-startled by my own relaxation. With Dave Jenkins handling facilities and Kim Scheibel handling registration, there’s so much less to worry about than in years past! I did have to bring the nametags, so I’ll be taking them over to registration this afternoon. In the meantime, I’m looking forward to a day of hanging out, finishing a writeup for the rvalue references coding session I’ll be running on Monday afternoon. This article has become much longer and more involved than I had ever expected it to.
At breakfast in the morning I meet Edouard Alligand, Christophe Henry, and Christophe’s wife Inna. Edouard came in from Paris, and though Christophe and Inna are French and Russian, respectively, they live in Germany. A very cosmopolitan group.
Naturally, Inna is wondering what she’s going to do with herself in this tiny resort town all week, in the off-season when so many businesses are closed, and I don’t have words to reassure her. I like Aspen anytime, but I spent so many summers here because of my dad’s connection with the Physics Center that it’s like a second home. Trying to help, I offer to give them a little tour of the city. It’s a nice walk into town and if your shoes are reasonably comfortable it’s pretty easy to make the loop on foot. So off we go.
When we get up to Main street I’m relieved that I can no longer find the little cluster of victorian houses that I noticed last year advertising cosmetic surgery and dentistry. Since I first came here as a child, Aspen has gone from being an old mining outpost with a ski area to a playground for the rich and famous, with rodeo drive boutiques pushing out many of the local businesses downtown. One of my favorite establishments was a little fiberglass A-frame called “Donny’s Dog House,” where you could get the best onion rings and kosher dogs served only on a whole-wheat bun. That place simply could not exist today. I’ve learned to accept much of the recent development, but “cosmetic surgery row” made Aspen a parody of itself.
Downtown, I do my best to point out the decent restaurants, knowing many of them are closed for the off-season, and of those that aren’t, many won’t open ’till dinnertime. At some point the walk becomes a mission to find a restroom, a problem I solve brilliantly by suggesting we could simply ask some open business for permission to use theirs. Apparently that isn’t done in Europe.
Next mission: lunch. But now we’re in the wrong part of town to find anything. Someone is craving steak, so we head past Rubey park’s empty rugby field to where I remember there being a steakhouse years ago. Gone. Across the street is an “Authentic Western Bistro” (closed), the idea of which made me a little embarrassed in front of my French companions. In the end, after passing through Carl’s Pharmacy to buy provisions (contact lens solution for me, beer and wine for everyone else—you can get anything there), we end up stopping at Hickory House.
Hickory House is the last possible restaurant before you arrive back at the Meadows. It’s a decent barbequeue joint, but… I kid you not… they brag that they import their ribs from Denmark! I have nothing against Denmark, mind you, but ribs? First, importing is just too highbrow for ribs, I’m sorry. Taking trash meat and smoking and/or marinating it until it becomes tender and delicious is a foundation of barbequeue. Second, isn’t this a classic American food and aren’t we in livestock country? The carbon footprint implications of shipping ribs from Denmark to the middle of the U.S. boggle the mind. But maybe it’s just the thin air and empty stomach. I can’t remember much about lunch, but I didn’t order the ribs.
Heading back to the Hotel afterwards, we decided to pass by the Physics Center and walk through the meadow instead of taking the road we came out on. After snapping a few pictures of magpies, Inna takes a picture of Edouard, Christophe (with bag o’ beers), and me. My look of satisfaction in this picture pretty much sums up my day.
Okay, so it’s been a while. Re-entry from BoostCon hasn’t been quite as smooth as I’d hoped, and I probably have a few other excuses if I dig for them. Anyway, I know some of you are waiting for a BoostCon trip report, and I’ll be trying to push out one installment every day. Here’s the first.
Saturday, May 2, 3:30pm: On the flight in from Denver, I have the seat with the most legroom of all. It’s all the way in back, in the middle, in a row of five seats straight across the whole aisle, just like where the bad kids used to sit on the bus. The only “E” seat on the whole plane, so I have the entire aisle for my long limbs as long as nobody needs to walk around.
The de Havilland Dash 8-200 is just a regional commuter plane, but with two engines hanging beneath a top-mounted wing it gives the impression from the outside of being a big, lumbering beast. The sound of the props on the inside manages to keep up that impression despite the cramped quarters. We’re grinding through thick, low clouds on our way to Sardy Field, the airport serving Aspen, Colorado. I can’t see a thing out there. Man, flying on instruments in the mountains. I’m glad that’s not my job!
Suddenly we drop out of the low clouds and land, all at once. The forecast has been threatening rain or even snow for days, so I’m a little concerned about what kind of weather we’ll have for the conference. This doesn’t look too promising, and it’s chilly. The second I step off the plane and take a breath, though, it’s like finding my place again in the world. That familiar thin Aspen air brings a smile to my face, and I stop worrying.
Sardy Field is a tiny airport. There are no “jetways.” Your plane stops and you climb out and down the steps, wait for a baggage handler to bring over any gate-checked bags (in my case, a guitar), and walk across the tarmac to the door. Today an unanxious “crowd” of four or five people is gathered around the baggage carousel, waiting for suitcases. Somehow I ended up with a big one again. It always seems like I need to pack extra stuff for this conference.
The conference hotel (the Aspen Meadows Resort) runs a shuttle service, but I can’t remember whether I asked them to pick me up or not, so I wait around outside the airport for a little while. Ah, well, a cab pulls up and I’m tired of waiting, so off we go.
Last year’s room at the Meadows was a little ways off from the main building, with its back facing onto the Roaring Fork River. This year I’m back in the first building, with its back facing onto the actual meadow. As usual, the accomodations are amazing, especially if you’re a fan of mid-century modern design. Every “room” is actually more like an apartment, with huge windows on either end, a small kitchen in the middle and a big living area in back where you can entertain guests without seating everyone in your bedroom. Since I have to run the conference I spend my evening settling in, putting my stuff away, and taking it easy.
It’s easy to see the economy is hurting; everything here at SD West 2009 is unusually quiet. However, last the Boost and C++0x birds-of-a-feather session we held last night was standing-room-only. I don’t know what to make of this, other than that people think this stuff really matters.
Update: by Friday, people were looking a little burnt, but the attendance and enthusiasm were high in my sessions throughout the week. Thursday’s talk on the C++0x support for Generic Programming (Concepts) was another standing-room-only presentation.
Hartmut Kaiser, our program committee chair, just posted the session list for BoostCon 2009 and I’m frankly blown away. This looks like the meatiest program we’ve had to date. I mean, come on, Software Transactional Memory, Icefishing for Neutrinos, and more! Come ON!
After two years of targeting my BoostCon proposals at the things I thought other people would want to see and do, I decided to take a cue from Scott Meyers. He’s always reminding me that when I run a session, I can have it be about the things I’m interested in. The logic, I guess, is that if it’s worth doing, others will be interested too.
So this year, instead of thinking about what I can teach people, I decided I wanted to see what I could learn, and get stuff done for Boost. Doug Gregor and I decided to submit two session proposals, “Boost++0x #1: hands-on rvalue references,” and “Boost++0x #2: hands-on decltype, variadic templates, advanced SFINAE.” Just like they sound, we’re going to be doing some coding!
The basic gist is to have a very short tutorial review of one or more new C++0x feature followed by 1/2 day of work exploiting these features in a branch of Booost, in groups of 2-3, using the features in GCC >= 4.3. There are two goals:
- Give BoostCon attendees (me included!) a chance to play with C++0x features in
- Get some useful C++0x features into the Boost Subversion Repository so that Boost is better prepared when C++0x compilers become more commonplace
I’m also really excited to learn more about CMake and make some progress on integrating it and CTest into our processes. Brad King from Kitware is going to be there and has committed to making the changes in their tools that Boost needs.