Main | September 2007 »

August 29, 2007

Psst... Slicehost rocks!

One of the myriad things I do in my spare time (when I'm not working for my old company or my new company is being the webmaster for The Perl Foundation. Socialtext (see also, old company), for quite a while, generously hosted the wikis for TPF on their community box, but since I had done some custom work on the websites I needed to retain root access to the TPF box, so we decided to move the TPF stuff to another hosting service.

Enter Slicehost, a company who seems to have the right answer for unix geeks who want a little piece of the internet that they can mold to do whatever they want. You get root access, they give you the distro you need (Socialtext software likes Ubuntu best so I went with that). They are really awesome and I highly suggest them for anyone wanting just this sort of thing... but... they've got a waiting list. So if you decide you too want to be able to install whatever on your box and play with your favorite tools, you'll need to wait a bit before you can do it.

Other than that, though, they're awesome. I've had nothing but good experiences so far in dealing with them.

Also, it's been a while since I pointed to my corn bread but I fed it to some hapless co-workers today and they were all aswoon, so I thought I should point it out again. The world's best cornbread. Seriously.

August 24, 2007

Freebasing at Metaweb

I had the opportunity to spend a few hours talking with the Metaweb team yesterday, which was really fun. I'm excited to have the opportunity to contribute to this project - it's new technology with exciting possibilities, building a community of diverse people (developers, content experts, lookie-loos). We discussed ways to deal with the various administrative issues they're running into (having people administer the system without accidentally breaking it).

During the conversation, I contemplated the Game Browser application I'd created to learn about Metaweb and Freebase (now open for public read access! go take a look!). Don't be bowled over by the irony, that you're looking at the root of a site named "perlgoddess" and the application is written in Freebase. It's not the sexiest implementation of an mjt application but you could use it to springboard all kinds of data browsers.

The backend data for the board games is a little weak (because most of it was added manually by me), so I have some notions to fix that:


  • Use the wonderful XML API offered by boardgamegeek to populate lots of useful information in freebase. I asked for permission and they haven't gotten back to me so I think I'll take the middle road of making the importer and importing into the sandbox and then point that out to them so they can ask me to remove it if necessary.

  • Poke around in freebase to find places where there are board games that haven't been tagged correctly, there seem to be lots of them. I'll probably write a tool that accepts a ruleset and then optionally adds properties onto types.

I was also tempted greatly by the notion of creating a couple of tools to make it easier to administer freebase itself, having heard about some of the challenges there:


  • User history, including things like 'number of entries created', 'number of entries updated', 'posts to discussion boards', 'replies to discussion boards' and other such things. The Metaweb team would love to be able to identify and encourage subject matter experts and this would help find them.

  • Recent posts - they have a browser for recent discussion posts, but it would be cool to make one that remembers your preferences and filters by domain so you don't have to see all of them. It'd be a fun MJT tool to create, so maybe I'll get to that.

    skud created a Metaweb perl module, and WWW::Metaweb was created by Hayden Stansby. They take a slightly different approach to the interface, and I'm excited to have the opportunity to work with each of them. I'm hoping the friendly competition helps us as a community figure out the best API possible.

    All that having been said, I'm *this close* to having finished the new bloggy interface for the TPF website. I need to push through and get that done so we can finish up the infrastructure changes for that. Once I do that I can play with the shiny toys above.

August 18, 2007

SociableText

Spurred by the blog posting on our corporate site advertising that we were going to update the MT 3.2 Socialtext Cross-posting plugin to 4.0, I took some time to do the work yesterday and make it true.

The MT developer documentation is a little light for 4.0 at this point, so updating the plugin to use the new callbacks was a little like stumbling around in a dark room looking for a particular color of ball. I tried looking at a few other 4.0 plugins but finally ended up just spelunking through the code to figure out which bits I had to flip to get my plugin to work. It was a little trickier because I needed to hijack a bit of the entry template so I could add the ability to turn on/off crossposting, and I wanted it to look spiffy in the context of the rest of the entry page.

I managed to get the plugin to work correctly, and am using it to cross-post this post to the Socialtext Open Workspace. The plugin is accessable from the Open Workspace as well.

One more thing off my list of things to do before I leave. I still need to get the commenting working on the TPF wiki-based bloggish website with OpenID so that we can have one backend running both TPF sites and simply posting the information there will cause the right thing to happen.

August 14, 2007

Cross posting to Socialtext

A while back, at the Movable Type Hackathon, I created a Movable Type plugin which allows a blog author to crosspost a blog entry to a Socialtext wiki (with or without tags, as desired). For example, this entry simultaneously posted to my blog and the Socialtext Open workspace.

Now SixApart is looking for people to create plugins for their 4.0 beta version. I've decided to update the Socialtext posting plugin so it works with 4.0, and also add some better behavior in the process.

As an aside, I installed MT4 on my macintosh so that I could do this development, because my hosting company (sweet though they are) aren't willing to install MT4 until it's stable. I can live with that for now, although I might just do it myself if I get a wild hair. I've been playing with it for a couple of hours and have to say it's really an amazing evolution from the previous version - much more intuitive and powerful. I'm quite impressed with the work done by the SixApart guys on this one.

Sadly, dropping in the 3.2 version doesn't just magically work so I'll need to do some fussing with it to get it working, but looking at the new API and example plugins I'm pretty excited to dig in and get it working.

If you're hankering for the 3.2 version let me know, and I'll put it somewhere people can get it. Or you can wait for the new shiny 4.0 version, which I'm planning to get done sometime this week.

August 13, 2007

Moving things from here to there

I've submitted my talk proposals for the Pittsburgh Perl Workshop, which I'll be attending as a volunteer to give Casey a hand. I submitted the Hydra talk I had so much luck with at OSCON, and also a talk on Metaweb.

Since I'm in the no-man's land of "Already gave notice but haven't changed jobs yet" I've got some time on my hands to consider various things in a philosophical way. I spent a little time contemplating the synergy between the two talks.

Hydra is a system for presenting wiki data in a non-wiki way using the fairly fabulous Socialtext API. In that talk, I discuss the basic data structure of wiki pages and the wonders of our Rest API, including the query structure and how to manipulate the results to present the information differently. I also cover Blikistan, a perl-built framework which allows you to build different wiki views more easily, and then I demonstrate a couple of example sites built using these tools.

Metaweb is a semantic database framework, which has been used to power Freebase (and my new gig is going to involve writing applications using Metaweb as a back end). In this talk, I'll discuss the structure of the data in Freebase, and the wonders of the Metaweb Query Language. I'll discuss how the result structure allows you to manipulate the results to meet your needs. And then I'll talk about the perl library for accessing Metaweb and manipulating the results, and show an example application.

So, one talk about the company I'm leaving, one about my new company. Both talks discuss using an API to present information in a different way, and both discuss a data model being used in a different way than its base use. And I end up both talks with discussions of a perl library and a demonstration of its work. I hope this doesn't mean I'm boring.

I'm happy to spend the time talking about Socialtext, even though I'm leaving. I believe strongly in the company and the technology, and I love many things about the code - and I've spent so long helping to build up a developer community that it would seem odd *not* to keep on doing that. With Metaweb, it's a new and shiny thing, full of amazing and interesting potential, and I can't wait to show it to people and encourage them to think about what they can do with it.

So, apparently my interests lie in "Moving stuff from here to there" whatever I'm doing, but I've noticed that this is actually quite a common thread. I'm excited about talking to (and with) the folks at PPW and getting new ideas about both products.

August 11, 2007

What kind of blog is this?

I looked at the posts I'd already made on the blog this morning and experienced a familiar sinking feeling, the feeling that I can't really do blogs the way other people do.

One of the things I find hardest about blogging is deciding what belongs on the blog. When I had a knitting blog, I wanted to write about cooking and fitness and my family and I kept feeling like those weren't appropriate and I'd feel terribly guilty for diluting the "good" stuff with other information, which created just enough of a barrier to writing that I ended up writing much less. And then I tried having a blog for each topic and I ended up not having any idea how to let my ideas flow, and writer's block set in and I kinda gave up.

If I look at the blog rings and the lists and people linking to other folks, they're generally focussed on one topic. If I were to pick an all-encompassing description for what this blog will likely be, it would be something like "The eclectic ramblings of a relatively complicated person." I might talk about theater, or martial arts, or recipes, or open source, or collaborative software, or perl modules, or being a mom. These things are all things that are important to me, and I'm just as likely to write about any of them.

While I'm sure that there are three or four people who are actually interested in all of the things that I might write about, and I'm similarly aware that I can fuss with Movable Type to create sub-blogs and RSS feeds for each category (which I've just done), I would really love to have the ability to create different presentations for the same information, so that people who only want my fabulous recipes aren't forced to read about perl modules, and so that I can have a different look and feel for each of them. Really different, not just "MT different."

The company I work at right now (Socialtext) makes software for "enterprise wikis." You can say what you want about the idea of selling wikis into mongo corporations but I have to say we've done some phenomenally cool stuff... one of the things I'm most proud of is the Rest API we created. With this API you can stick things into the wiki or pull things out, and one of the coolest things I did was work with a framework on top of Socialtext to create two different faces for the same content.

There's a wiki on Socialtext's community box (you can't see it because it's private), but that single workspace drives the site at http://www.perlfoundation.org and also the blog-looking site at http://www.perlfoundation.org/news (which is just about done now). I did a presentation about our API and these websites at YAPC (which was a fairly funny story. This is cool because both of those sites are driven by the same workspace. If I post something to the workspace it shows up in both places. I could have 72 gazillion websites all using the same basic information based on how I tag it, and that's much more to my liking.

With this technology it would be simple for me to present my various rambly thoughts in multiple different ways (including non-blog-looking ways)... but unfortunately the Socialtext software takes a lot of system to install and I don't have that available. So I'll work with Movable Type and make it behave for me so I can pretend I have several different blogs which all just happen to coexist in the same namespace.

I can do a lot of what I want to do with Movable Type, because they've got some great functionality already. I'd like to write a plugin to create a Rest API matching the Socialtext API, so that I can have full flexibility to present the information in my blog however I want.

In the meantime, welcome to "The eclectic ramblings of a relatively complicated person." You can use the RSS feeds or category links to stick with a single category, or you're welcome to read all my posts and try to figure out what the heck is going on in my wacky head. When I'm not so sleepy I'll probably get all jiggy with the template language for MT and have different colors or something for each of the different archive types.

August 10, 2007

Summer Salsas and Sangrias... and Sustainability

salsas_and_sangrias.jpg
Tabitha, Melissa, some sangria, and the obligatory iced tea cup

My friend Susan recently had a birthday, so I signed us both up for a cooking class at Fresh Prep Kitchen - they have recently expanded to include cooking classes. Of course, since we're in Santa Cruz, their classes are somewhat different from the "mainstream" cooking classes offered elsewhere. Rather than teaching you how to make frou-frou dishes of various types, their classes are generally focussed on creating dishes from sustainable food of one form or another.

Last night we headed to Fresh Prep to attend our class, Summer Salsas and Sangrias. The women who taught this class (Tabitha Stroup and Melissa Schilling) are wine and cheese experts with extensive knowledge in food history, local cuisine, and food pairings in general. They teach classes in various topics throughout the bay area, and are known to many as the "Cheese Chicks."

Throughout the class, there was an overarching theme of sustainability and the eating of fresh, seasonable foods (along the lines of the 100 Mile Diet movement). Several of my friends in other regions have started following these guidelines, and spending time in this class talking about eating local foods reminded me how lucky I am to live in the Monterey Bay Area, where almost everything I could possibly need (except for chocolate) is grown reasonably close to our house. We have farmers markets most days of the week, and some of them go all year... and as most of us know, if you buy food that is in season and grown close to you, the flavors are orders of magnitude better. It does take some time and commitment to get down to the farmer's market, but I'm going to make a point of trying to do so regularly.

Another point that Tabitha made was that foods that like the same climates generally like each other as well. Peppers, tomatoes, limes... all of these foods like hot, dry climates. And when you mix them together they create a wonderful combination in your mouth. Regional cuisines of the world are historically built around the foods that are indigenous to those climates, and working with those pairings helps create foods that naturally work together in recipes. She's not a huge fan of fusion foods - she said she generally finds that fusion creates confusion.

As with any situation where you're talking with people who are passionate about a topic, we had several fascinating digressions during the class. We had a fairly extensive side discussion about local, fresh eggs and how much better they are than the grocery store eggs (and why). We talked about David Masumoto's San Juaquin valley peach farm and his book Epitaph for a Peach, and how his drive to grow heirloom peaches brought about the first Farmer's Market in California. Melissa told us about going to a dinner at Secret Sea Cove Beach with the folks from Outstanding in the Field at Secret Cove Beach, where the growers of many ingredients were there along with the chefs who created the dinner courses.

But, back to the main topic... Salsas and sangrias are recipes where you can just go find the current fresh food and mix it together to good effect. There were two salsas of this type (coarsely chopped stuff thrown together) and two more precise blended sauces. One of those was a really wonderful chili salsa (which they also presented on some tilapia) and the other one (the pumpkin tomatillo salsa, similar to that found at the Bijou Cafe in Portland) was worth the price of admission by itself.

In any case, we had a great time. Since Susan and I are both growing heirloom tomatoes, we'll definitely be going to the Celebration of the Tomato class in September, where Tabitha said she'd be teaching us how to make Tomato Sorbet, along with several other things. Given the monstrous size of my tomato plants, I think I'll be needing those recipes. I just have to find something red to wear...

Obligatory Recipe

We did get a sangria recipe, but I actually preferred the one they presented which was more haphazardly thrown together, which ended up being something like:

1) Go to the farmers market and find some fresh seasonal fruits . Watermelon, Peaches, citrus, whathaveyou (cucumbers work too). It's important that at least some of the fruit be citrus, and you want to end up with about 2 cups of fruit (or more if you want your sangria to be extra fruity)
2) Chop it up and throw it in a jar, and add 4 oz of Pimms No. 1, 2 oz fresh orange juice and a little sugar, and stir until the sugar has dissolved.
3) Let it sit for a couple of hours in the refrigerator, and when you're ready to serve it add a 750 ml bottle of chilled sparkling wine. Pour it into glasses over ice and enjoy.

Working at Nerdvana

As I mentioned in my last post, I am leaving my current employer (Socialtext) for a new, extremely exciting position at Applied Minds (here's a Wired article describing the nerdvana that is AMI). I'll be building prototype applications for them and working with the Metaweb folks. I'm totally jazzed about this opportunity - Metaweb and freebase are super exciting technology, and I've never had the opportunity to do true R&D, where you have the time to experiment and explore the possibilities of the technology. I ran into some of the Metaweb folks at OSCON, and they were super cool. I'm really looking forward to working with them.

Not since the beginning of the web revolution (when I made little tools to view sales reports in Mosaic) have I had the opportunity to be on the bleeding edge of exploring the possibilities of a new technology. I'm planning to work with some Metaweb community members to help develop a Perl Metaweb client module. Other folks are working on a Ruby client module, and what I'd really love to see is the developer community coming together to define how a metaweb client library should behave (basic functionality, what calls it should support, etc.)

If we can start now, at the beginning, we can make it easy for folks to move among the dynamic languages and know what kind of behavior they can rely on with the libraries, making it easier for people to use the right language for their particular task without having to work around a new set of idiosyncratic object methods.

Of course, in order to do this I'll need to actually get on the ball and start participating on the developer list, and I'm currently trying to get done with my Socialtext work. I'm somewhat tempted to just wait until I actually start my new job (September 4th) and let my brain have a bit of a rest between now and then.

Coming from a company with an Open Source focus, I suspect that there will be some adapting in my new position, as I'm working for Applied Minds (whose entire revenue stream is dependent on strong intellectual property) but trying also to help grow the Metaweb developer community and promote other development. I'm a strong Open Source advocate and a vocal member of that community, so I expect that we'll do our best to share the right things to help the Metaweb community while keeping the proprietary pieces secret.

Returning from the Deep


Once upon a time, I had a knitting/mom/cooking blog, which is still hanging around here but, as you can see, it has been sadly neglected since I started working at Socialtext. One reason for that is that I spent a lot of my blogging energy blogging on our internal wiki (and eventually I blogged on our externally visible Open workspace... but the time has come for me to leave Socialtext and so I'm starting up my personal blog again.

This is going to be a "Kirsten" blog, filled with whatever I'm thinking about at the time. People who know me can tell you that's a fairly wide swath of everything there is in the world...