Moving to San Francisco

Here’s an update for family and friends of what we’ve been up to and what’s next…

As I’ve previously mentioned, I started a new job at Vidoop a month or so ago which will have Elisabeth and I moving to San Francisco. We were both up there a couple of weeks ago and were able to find an absolutely perfect apartment. It took a little bit to convince the landlord that we really were planning to be in San Francisco for the long term, but it was well worth the extra trouble. The place we found is right in the heart of SOMA, about four buildings down from Chris who I’ll be working with at Vidoop. It’s a beautiful three story loft, hardwood floors throughout, 2 bedroom, 2 and half bath, washer and dryer in the unit, parking space included (which would otherwise cost upwards of $300 a month), 20 foot ceiling in the living room with windows all the way to the top (lots of natural light)… all in all about 1500 square feet. Like I said, it’s really perfect for us. The one major downside is that the kitchen is rather small, especially compared to what Elisabeth has been used to all her life, but we’ll manage.

We’ve also just about finished our post-wedding shopping for furniture and kitchen stuff to outfit our new home. We did our “registry completion” at Linens ‘N Things, where they let you buy everything left on your registry at 20% off. So we bought everything they had (including Elisabeth’s KitchenAid Mixer which will be the centerpiece of our kitchen) and a few additional things we saw. Somehow I think we got 20% off the things that weren’t on our registry as well, but oh well. We also made an “impulse buy” at World Market when we saw that we could get their entire Tao Collection of furniture for 60% off. We bought every piece they had with the exception of one table that we didn’t really know where to put, so we’re now good on furniture for the entire living room and office. We still need a bedroom suite, but that’s just gonna have to wait for the time being. We will be setting up the second bedroom as a guest room, so once we get settled I fully expect people to come over and visit. :-)

Pretty much everything is packed up and ready to move here. The moving company comes to load everything up on Monday, July 7th and plans to deliver it to the new place sometime between the 9th and the 14th. It depends on what other loads they can fit onto the same truck, but we should have a more definite delivery date in a few days. In the meantime I’m working wherever I can find high speed internet access, and we’re saying our goodbyes to local family and friends. Two weeks from now we’ll be in San Francisco setting up the new place. (Anyone in SOMA want to come and help assemble a LOT of furniture?)

Wedding Photos

I’ve finally gotten around to uploading all of our professional wedding photos to our Wedding Set on Flickr. Additionally, they can be seen as a slideshow or along with all the photos taken by our wedding guests in our Flickr Group. These are full resolution photos, primarily so that family and friends and can order very reasonably priced prints. Thanks go to Nic Dragomire of Tamarack Studios for such a wonderful job on our photos.

A note to non-Flickr users: You will need to have a Flickr account to order prints of any of the photos. I apologize for that, but the good news is that it’s the same as any existing Yahoo! account, which most people tend to already have anyway.

Changes to wp-openid

Today I committed a few pretty substantial changes to wp-openid, changing how the OpenID flow happens. Effectively, I’ve created a new single endpoint which receives all OpenID responses, located at /openid_consumer. Previously, these response were sent to a number of different endpoints depending on whether you were simply logging in, leaving a comment, or adding a new OpenID to your WordPress account. Consolidating on a single endpoint has allowed me to cleanup the wp-openid code considerably.

Posting comments

OpenID is integrated into comment posting by intercepting a comment submission to see if it includes a valid OpenID. If it does, the user is sent to their OpenID provider to authenticate, and upon their return the comment is submitted. Previously, the wp-openid plugin itself performed the comment submission, basically by copying the logic found in wp-comments-post.php. This introduced a number of problems, especially when using any other plugins that modify the comment submission process such as reCaptcha. Violating DRY is bad, but necessary at times. Breaking other plugins is really bad and had to be fixed.

The current solution I’m using is to capture the comment submission POST, do the OpenID dance, and then replay the POST (modified if necessary). If the OpenID dance results in the commenter being authenticated as a valid WordPress user, then the comment POST is modified to look like they were logged in all along. If the OpenID dance results in user attributes (via attribute exchange, sreg, hcard, foaf, whatever), then those values override what was included in the original comment form. If OpenID authentication fails for whatever reason, the idea is to give the user the option to submit the post without OpenID. This part isn’t finish yet, but will be before the release. Currently, if OpenID authentication fails, then the comment is very likely lost unless you use other means to save the comment. And of course, if any other plugins include additional data in the original comment POST, it will be included in the replayed POST.

Still left to do

Because all of the OpenID responses are being sent to /openid_consumer, it’s not quite as simple to display friendly messages to the end user. I’m may try to find a way to display error messages similar to how they look today (for example, login errors are displayed on the wp-login.php page, etc). Otherwise, I’ll just have a somewhat generic error pages that is specific to OpenID errors, and then include links back to whatever the user was doing.

Need Testers

Right now, I’m in need of people to test this new version of the plugin to find any cases I may have overlooked. Like I said, the message display is in need of work, but everything is at least functional as best as I can tell. If you’re interested in testing, checkout a copy of the latest code from the Diso Repository and give it a shot. If you have an older version installed, you will most certainly need to disable it first, then re-enable after installing the new version. Otherwise, WordPress won’t handle the /openid_consumer endpoint properly. If you have any questions or comments, you can leave a comment here or on the Diso Mailing List. As always, I would strongly discourage you from using this on your production WordPress installation (notice I’m not using it here).

Why I’m going to Vidoop

So it’s not exactly news at this point, but it is indeed true that as of today I am now employed by Vidoop. This has been a few months in the making, so I figured I’d explain a little of why and how we got to this point.

I’ve been working in the Identity Management space for a few years now. I started getting involved with the Shibboleth project while at the University of Memphis. After a year and a half, I moved to California and took a job at USC working in their middleware group. I’ve spent the last two years there helping to develop and manage various parts of the Identity Management cloud including the LDAP directories, meta-directory processes, and their Shibboleth environment. In October 2006 I formally joined the core Shibboleth development team, focusing on the Shibboleth 2.0 Identity Provider.

Meanwhile, I have also been toying with OpenID for a couple of years. In early 2007 or so, I sort of took over development of Alan Castonguay’s OpenID plugin for WordPress. I started with a couple of new features, then worked to add support for the latest OpenID protocol, lots of code refactoring, etc. I got to know characters like Chris Messina, Scott Kveton, and a host of others. I continued making updates to the WordPress plugin as I had time, but it never felt like enough. Don’t get me wrong, I certainly enjoyed the work I was doing at USC and with Shibboleth… I just would have liked to have had more time for everything else as well. Every now and then Chris or Scott would prod me about going to work at Google or somewhere to spend more time on OpenID and related technologies, but I wasn’t ready to leave my work at USC.

Late last year, Chris Messina and Steve Ivy announced the DiSo Project, initially based on my updated wp-openid plugin. Within the first week after it was announced, I sat down with Chris and Steve and we decided it would be best to officially move the wp-openid plugin under the DiSo umbrella to allow for tighter integration with the other planned work. Then a lot happened this last February in the social networking space — Google announced the Social Graph API and SGFoo really got people talking more about enriching the OpenID endpoint (among other things). Things were beginning to move pretty fast, and I felt like if I didn’t jump in now then I’d end up watching all the great new developments from the sidelines. I spent the next few months interviewing with a number of companies active in this space and made a couple of trips to San Francisco to talk with them in person.

In the end, a dinner conversation with Luke Sontag had me sold. I was quite familiar with Vidoop and their OpenID provider, knew they had a great development team, but had always been a little skeptical of the company. After Luke gave me a better picture of their overall vision and where technologies like DiSo fit into that picture, I knew that these guys really “get it”. They understand the importance of what DiSo is trying to do, and more importantly they are willing to do their part in making it a reality. I love Vidoop’s OpenID implementation and have been using it since before I took this job, but that’s not why I did. I took the job because the team at Vidoop know their shit, they know the kinds of problems we’re up against, and they are ready to take a shot at developing some real solutions. Well that and I really can’t wait to get started working with Chris a lot more. :)

New Beginnings

I guess I never actually mentioned it here on my site, but I’m getting married in two weeks. If you remember, I originally moved to California for Elisabeth a little over two years ago, and now we’re finally getting married. We’re both definitely excited about it, but at least for the next week and half we’re just stressed out trying to get everything ready.

Every marriage counseling book in the world would probably recommend otherwise, but I’m also taking a new job when we get back from the honeymoon. I resigned my position at USC early last week, and my last day will be next Friday April 25th, 2008. It is a bit bittersweet, as I really wish I would have had the time to wrap up more of the unfinished projects I’m leaving behind, but I trust that they are in good enough hands and will be well cared for. If things go as planned, I will continue on as part of the core Shibboleth development team, which I feel is very important. There are a few major additions to Shibboleth we’ve talked about adding, but simply haven’t had the time. The primary attraction to the new job is quite simply the work I’ll be doing and who I’ll be doing it with — I’ll finally be able to really dig in to some of the projects that haven’t received the level of attention I would have liked to give. Aside from that, I don’t think I’m ready to say too much else about the new job, only that it is in San Francisco and that we will be moving up there as soon as the wedding is over and we find a place.