Main

March 14, 2008

Getting something done

I'm sure I'm not the only one who gets periodically overwhelmed by the number of things I'm not doing right. I still shampoo my hair, my kids watch TV and play video games and despite my best efforts we still seem to end up with transfats and other evil plastic foods in my house. Every time I turn around, there's something new to feel guilty about, and the packrat research monster inside of me insists that I need to dive deeply into every single topic to determine the truthfulness of the claim, which just increases my anxiety about my worth as a human being, while not actually giving me space in my head to contemplate anything of actual worth.

I have spent many an hour railing against the mean and nasty high bandwidth world, providing so much chaos and so few answers... but in a moment of clarity, I discovered that these gifts brought to me by the intertubes, clamoring for my attention, are not actually the main source of my anxiety. My anxiety comes from having too many things bouncing around in my brain like colored balls in a Busy Ball Popper. And I have found something that actually helps.

I read Getting Things Done a while back, and it kinda was ok, and seemed like a pretty good idea, but I wasn't really sold. Then a few weeks ago I was pointed to OmniFocus, a GTD tracker for the Mac, and I discovered that if you wrap up a good set of ideas in a cute and sexy UI I will actually use it. And when I spend my time actually doing things instead of scrambling to remember which next thing I was supposed to be doing, things get done faster, and I am calmer. I sort of feel like I'm playing that game from ST:NG where they had the little brain game that gave you zaps of happiness whenever you make a goal. I check a box, it gets a line through it, and I feel a little swell of pride. It integrates pretty nicely with my iphone (courtesy of Toodledoo) and it allows you to see all your 'errands' or 'phone things' in a list separate from the project they're associated with. Which is great when you're trying to get all those lame phone calls out of the way at once.

I'm not sure if I'm really any closer to zen mastery, but I sure feel happier. Even though I've been battling the most rotten cold ever this week, I've gotten a lot done for home and work, and I don't feel like the world is sitting on my shoulders, waiting to collapse. And now I can check off the item marked "Make blog post about OmniFocus." Woo. That felt good. Maybe I should call and schedule that dentist appointment next.

February 27, 2008

Django is great^h^h^h^h^hfrustrating

Don't get me wrong. I do like django. I've been working back and forth in Pylons and Django, trying to learn each of them well enough so that I can figure out which one will give the right answer when I know better what the powers that be want.

So, if you, like me, have a debian etch box upon which you want to install django, have it work with the tutorials in the book and on the site (thus needing python2.5), using mod_python so that you can work on a remote server, with postgres, do the following:

  • Use the Django from subversion. It lives in http://code.djangoproject.com/svn/django/trunk (don't forget to uninstall python-django if you've already installed that.
  • It requires python2.5. The packaged version is fine. apt-get install python2.5
  • Get mod_perl as a package, because it will make all the connections correctly (but it will be linked to python2.4), and then
  • Install apache2-prefork-dev so that you have the right apxs2 to build mod_python against python2.5
  • Download mod_python from http://ftp.wayne.edu/apache/httpd/modpython/mod_python-3.3.1.tgz
  • Configure it (with --apxs=/usr/bin/apxs2)
  • Install it
  • Get psycopg from http://www.initd.org/pub/software/psycopg/PSYCOPG-2-0/psycopg2-2.0.5.1.tar.gz. Don't get fancy and try the new one. It doesn't work.
  • python setup.py install that sucker
  • And then restart everything and all should be lovely in the world

So that's...


svn co http://code.djangoproject.com/svn/django/trunk django
ln -s `pwd`/django /usr/lib/python2.5/site-packages/
ln -s `pwd`/django/django/bin/django-admin.py /usr/local/bin
apt-get install python2.5 libapache2-mod-python apache2-prefork-dev
wget http://ftp.wayne.edu/apache/httpd/modpython/mod_python-3.3.1.tgz
tar xzf mod_python-3.3.1.tgz
cd mod_python-3.3.1
./configure --apxs=/usr/bin/apxs2
sudo make install
cd ..
wget http://www.initd.org/pub/software/psycopg/PSYCOPG-2-0/psycopg2-2.0.5.1.tar.gz
tar xzf psycopg2-2.0.5.1.tar.gz
cd psycopg2.2.0.5.1
sudo python setup.py install
sudo /etc/init.d/apache2 restart

I spent a good deal of today trying to find these answers. So, you're welcome :-)

November 13, 2007

Working like Sheep

I have a friend who hearkens from the heartland of America, and is thus more schooled than I in the cosmic truths to be found on a farm. We were discussing the relative dimness of various farm animals, and he mentioned that sheep were pretty much the stupidest animals around. I asked why, and he said that a lamb, when confronted with a meadow full of tall grass, will eat through the grass, leaving a 1-lamb-wide path behind them. When the lamb is full, however, it is faced with a horrible situation. Walls of grass surround it on the front and the sides. After looking left and right in a panic, the lamb will start to bleat piteously, hoping for someone to rescue it from its plight, eventually sitting down to wait until it's hungry again so that it can extend the path further. I'm not sure how true the story is, but it makes for a compelling mental image.

I was having lunch with my friend Eugene yesterday, and we started talking about my last post on making space, and about the sheep analogy, and I realized that in fact the two are very related. I frequently find myself in a position where I am trying to solve a difficult problem. The more I push, the more the answer eludes me, but I have this underlying fear that if I break away and come back to the problem with fresh eyes, I'll lose the context I've worked so hard to achieve. The reality is that I'm just like the lamb. The answer I need will only be clear when I back up. The context I've built up is *broken*, which is why I'm not finding the answer.

I spent a lot of yesterday working like a lamb, pounding my head against a problem which turned out to be fairly simple to solve after I returned from lunch. Chastised by the universal forces, I meekly turned off the computer at 5 so that my brain cells could recharge before I tackle the next problem this morning.

November 3, 2007

Creative Space

So I've now been at my new job for about 2 months, and there's a major contrast between my last job and this job.

We'll start with the negatives because there aren't many. I'm a remote worker at a company that does most of its collaboration and communication in person, so I've had to work hard at staying in touch with the people at the office. It helps that I go down there at least once a month to touch base, and I'm getting to know the folks (and they me) so remote communication is more effective. Also, without anyone checking in with me every day it takes more discipline to buckle down on days when my motivator unit is broken. And I'm currently the only person on my 'team' which makes it a little hard to get traction. And I miss all my ex-coworkers.

Now, the positives. Unlike the company I came from, there is no drama here. Of course, it's replaced by its own special type of politics, of a grown-up type I'm somewhat unaccustomed to. Fortunately I seem to be negotiating these new waters fairly well, and the end result of this environment is that my job is much, much less stressful. Being the only remote worker also means that I'm almost never interrupted for anything, and my velocity when I'm writing code or reading documentation is generally quite high. And working somewhere that brainstorming is a valued activity has given me the opportunity to discover that in fact I'm good at thinking up ideas, when I have some time to do so.

All in all, the positives far outweigh the negatives, and I feel like I'm learning, contributing, and working in a positive environment. It's still hard to get out of the habit of feeling horribly guilty if I'm out of contact for a bit, but I'm slowly becoming more relaxed and just enjoying the work I'm doing. It seemed very odd to me, coming from a place of such urgency to a place that seems so much more laid back, but the folks at AMI have the space to think up cool stuff - without that space it's so much harder to let the magic happen.

I know that small startups have less space to allow their employees to stop and think and explore, but I wonder if sometimes the need to rush creates more need to rush, and squelches the innovative ideas best suited to an agile, entreprenurial company. I was reminded of this several times when working at Socialtext, when I stopped rushing around for a few days and as a result found the solutions to the problems that had been pestering me for weeks.

Companies need to create space for their employees, especially when the employees aren't good at doing so for themselves. People need to create space for themselves. All of us, all programmers, have found ourselves staring intently at the screen, the zone long past, trying to find the solution to a problem... and then flash on the solution as soon as we step away to feed ourselves and look at the sky. Make space for yourself, and try to help others around you find space for themselves as well.

October 18, 2007

Perl Makes Good Programmers

I bet you think that I'm kidding, right? Perl allows programmers to build extremely bad habits, doesn't force discipline, encourages shortcuts that simply aren't possible in other languages. But I'm actually serious.

I had a conversation with my new boss a few weeks ago that went something like this:
Boss: Do you know what data driven design is?
Me: No.
Boss: (google it if you don't know :-)
Me: Oh. That's how I code.
Boss: Good

So it occurred to me to wonder why it was that I code that way, what with my lack of formal education and all. I went to the Pittsburgh Perl Workshop last weekend (my OpenID presentation went great, thanks for asking - I used sock puppets to describe the user/website/server interaction) and spent a great deal of time thinking about how perl people write code and why, and I realized that I code this way (with reusable, modular, configurable code) *because* I work in Perl.

The easiest way to get started doing something with Perl is to pull down some helper code from CPAN. All of that code (ok, not all of it, but most of it... well, ok, the parts I actually use) was written in a modular way, designed to be configured to work for multiple applications. The more time someone spends writing Perl code, the more likely they are to approach each new problem in a modular way (I need something to do A and B, and then C to tie them together) - this makes it easier to use CPAN to reduce your workload, but also means that when you write the code you're likely to avoid hard coding anything in the program itself.

When I started working in Flex, I was a little frustrated that it was so difficult to find examples where developers had pulled the configuration information out into a separate file, but the truth is that's not terribly surprising. First, there simply aren't nearly as many examples of Flex code out there, so it's harder to find any specific thing. Second, without the external community pushing developers to think beyond their current application, it's easy to fall into the habit of taking the shortest path to "done." Working with Perl (and some seriously critical programmers) for (ack!) thirteen years has given me an allergy to hard coding *anything* in my programs. Which makes it harder for me to spit out something quick and dirty, but makes the things I *do* make much more powerful.

October 8, 2007

Now I remember why I do this job...

Today I had one of those days you get as a programmer, when everything coalesces in a perfect way to shine a happy light on the universe. I had a list of bugs and a single feature I wanted to add to my Flex program. The single feature (dynamic filtering based on values in a set of arrays) took me a long time, and I wrestled with it mightily for several hours. I wanted desperately to make a filter which was extensible, which was easy to add new fields to, and passing variables around in Flex is not something I've become comfortable with.

So there I was, pounding my head against the thing, frustrated and feeling incompetent, until 4PM when a light shined down upon me from the sky, the scales fell from my eyes, whatever cliche you want to use... and the feature was complete. And when the dust cleared, I realized that 3 of the bugs on my 'to-do' list had gotten fixed in the process of creating this feature.

It's an awesome day when you feel "done" with what you're working on. I wasn't even tempted to start on something else... I just basked in the glow of having gotten it done.

For anyone wandering here from flex land who wants to see the code, here it is:

private var filterObj:Object = {this:filterThis,that:filterThat};

// These arrays are populated elsewhere with a list of strings to filter on
private var textObj:Object = {this:"",that:""};

private function filterAll():void {
var filtered:Boolean = false;
var filterType:String;

for (filterType in filterObj) {
if (filterObj[filterType].length > 0)
filtered = true;
}

if (filtered) {
dataSet.filterFunction = filterGeneralSet;
dataSet.refresh();
} else {
dataSet.filterFunction = null;
dataSet.refresh();
}

private function filterGeneralSet(item:XML):Boolean {
var filterType:String;
var element:String;
var myArray:Array;

// This is an 'and' filter where everything has to match for the element to return true
for (filterType in filterObj) {
if (filterObj[filterType].length > 0) {
myArray = filterObj[filterType];
for each (element in filterObj[filterType]) {
var itemFilter:String = item.child(filterType)[0];
if (itemFilter != element) {
return false;
}
}
}
}
return true;
}

October 1, 2007

Conceptual Reference Books vs. Tutorials

I need to learn Flex so that I can throw together a demo of an application in the next couple of weeks. I know what I need to do, some other kind soul has done the programming and even published the source for the hardest element in the application, so I just need to ramp up on the language so I can take that code and run with it.

Being a research queen, I headed over to Amazon to look at the reviews for Flex books. I read all of them and decided on Programming Flex 2... forgetting, apparently, that I have the attention span of a gnat and so a conceptual programming book is doomed to fail to teach me something new.

I did make it through 100 pages before MEGO (My Eyes Glaze Over) set in and I stopped being able to understand any of the words on the page. I shook the cobwebs out of my head and went back to Amazon and discovered that I probably wanted this book instead, since it's in a tutorial format instead of the bone-dry lecture format of the other one. I was going to head down to Borders to get it, but my daughter called to be picked up from school so I didn't get the chance.

Having returned home, I hunted for reasonable online FlexBuilder tutorials and found that Adobe actually has some really good tutorials in their documentation. Turns out that there's also a special deal with their training provider for 30 days free, so I signed up for that. In fact, these two training courses map almost exactly to the book I didn't end up buying and I'm probably going to get more out of an online presentation.

So, having read 5 chapters/100 pages of a perfectly good reference book in 3 hours this morning, I had a vague understanding of the overall application and how it worked, but no idea at all how to do anything in the application. Doing 11 tutorials later in the day (about 2 hours) got me much closer to where I want to be - I finally said "uncle" when my brains started dribbling out of my ears. I plan to spend the next couple of days doing more tutorials and then I think I'll have more than enough experience to do what I need to do. Heck, a goodly part of my job is going to be making prototypes - I might as well learn this one really well before trying out OpenLaszlo.

What did I learn? O'Reilly makes really good reference books, but I just can't learn from them. I need someone to tell me how to do various things and I'll pick up all of the intricacies from that. I'm good at identifying when my kids aren't learning something with a particular method, but it's harder to remember that I have the same limitations. On the other hand, the O'Reilly book will be a good reference, so it wasn't a waste of money.

September 28, 2007

Pragmatic (don't be dumb) Programming

Since I have no formal degree in programming, I have been extremely fortunate to work on teams of very talented, smart and diligent coders. Wherever I have worked, the bar has been high, the code has been challenging, and the expectation is that everyone on the team will do their best work every time. The terminology used among these various teams has varied, but the general sentiment is always "Don't do something you're going to regret later." Don't tie the data to the code, don't make it hard to extend the program, don't tie code together unless you have to, don't make assumptions about what people will do with the application... in short, don't be dumb. When we were working on the REST interface for Socialtext it was one of the best projects, because decoupling the data from the functions was useful and fun and it just *felt right.* The words used to describe these concepts were general terms like abstraction, pluggability, configurability.

Coming to Applied Minds, I find myself awash in new vocabulary words and frequently find myself scurrying to look up a term that's been thrown my way. Fortunately, once I do that it generally turns out that yes, I do that, whatever it is. For instance, Data Driven Design falls under abstraction, configurability, and "Don't be dumb." But I didn't know that.

I have to learn a couple of new languages next week in order to create a demo application for us to play with, so I headed off to Borders to pick up a book or two. While I was there, I also picked up the "Pragmatic Programmer" book which I heard referred to so frequently by my cohorts at Socialtext. Yesterday and today I read through it and discovered that it is all full of "Don't be dumb." Things I have observed and internalized, but couldn't articulate quite yet.

The book is an excellent discussion of the way a good programmer behaves, the things they do and don't do, and how to incorporate them into your workflow. Many of the sections are likely to add more overhead to your project up front - test harnesses, contracts, decoupling, abstraction of metadata. But the return on investment is huge. *Not* doing these things, paying attention only to the here and now and neglecting the future, is where almost everybody gets caught.

I have a strong tendency to want to get to the finish line as quickly as possible, and am frequently stung by not doing these things. Here, I'm starting a new project. It's not a rush (well, the demo wants to be created in two weeks, but that will be a true "throwaway" prototype for the purposes of playing with the UI elements). So I'm pledging to myself that I'll keep the discipline necessary to do things right, take the extra time to think abstractly and control the interfaces between the moving parts.

It's a good book. If you are a programmer and you haven't read it, you probably should.

September 19, 2007

Brainstorming the day away

I'm a planner. I like to plan. It's very comforting to know how things will happen. When I started this job I planned to spend a couple of weeks brainstorming, I outlined what I'd brainstorm about and what I'd have when I was done. The first week I pretty much stuck to my plan and investigated things, and then this week I was going to spend writing proposals about applications.

This weekend I helped my dad move, which involved flying 500 miles away and then driving his car back up on Saturday (and then helping him unpack on Sunday). The Saturday drive gave me a lot of time for thinking, and I realized that I was much less interested in what the applications would do than I was in how they would help the user visualize the complex data space. Metaweb is a great backend for things, and MQL is a good language for querying graph data, but there's still not a great metaphor out there for exploring that kind of data, and that's the puzzle I find most intriguing.

As it turns out, I'm going to end up with something along the lines of what I said I'd end up with, but the focus will be very different, because the piece I'm critically interested in is the presentation methodology, making the content domain much less problematic.

This afternoon/evening I'm heading up to the Metaweb offices to attend their Freebase user group with a couple of my co-workers who are flying up for the occasion. Should be a lot of fun :-)

September 13, 2007

Enabling Collaboration

I installed Socialtext on a system at AMI (and hey, who knew, it's actually *less* work to install on debian etch than on ubuntu dapper) so that various groups could use it for project coordination and collaboration. So far my workspace is just me writing a boat-load of pages, but I have hope that it will turn out to be an excellent way to communicate progress and record our thoughts.

Once the system was set up, I decided to make an IRC server so that I can actually hang out with the people I work with, even though they're in a whole nother part of the state. Since I had a debian box, and since I am very lazy, I looked to see what I could get with apt and ended up with ircd-hybrid. Took some fussing and fighting but I got it all running and working, and then I decided to add a bot.

Socialtext uses PerpLog for our logging, but since I wasn't really planning to put in a purple wiki and I wanted something more actively loved (sorry, cdent) I checked the apt-cache for IRC bots. My first choice was "blootbot" because it's written in Perl and seems to have all the bells and whistles I might need - plus Perl means I can add functionality easily. Unfortunately, I didn't manage to find the documentation (cleverly hidden on the sourceforge site) until too late, and even then the docs are pretty darned skimpy.

I ended up using supybot, which is written in Python and has a phenomenal set of documentation on installing it, configuring it, writing plugins, playing with it, just generally anything. After installing it I decided to take a slight detour in my day to write a simple plugin for looking up directory information within our company:

kirsten: !cell Kirsten
soupy: kirsten: Kirsten Jones: Cell 831-123-4567

We have an LDAP server which doesn't have all of the info I want, and a directory page which does, so I entered the magical world of screen scraping. Python has a library called BeautifulSoup which parses an HTML document and builds a tree of objects. Once that's done, you just have to figure out how to navigate to the piece you want and spit it out. Took me a little while to get it working correctly, but it does, and now I have both some plugin experience (for making more) and a plugin to save me from the horrible fate of going to a web page to find someone's cell phone.

I certainly could have done the same thing with blootbot, but I didn't have all day to peer through the code to determine how it worked. The lesson here is that documentation is extremely important - all throughout the supybot docs the point is reiterated that the developers of the bot want input and help to make it the best bot ever...

Plus, I needed to brush up my Python skills.

September 9, 2007

The Target Fugue State

Someone I know once referred to the state reached by shopping at Target as the "Target Fugue State." You go in there to buy a dishpan. While in the dishpan row, you realize you needed some measuring cups. The endcap reminds you that you needed some dish towels, which brings to mind the fact that you needed some bath towels for your guest bathroom. By the time you've left the store you've got 20 items, which you ended up grabbing because Target spends tons of time and money figuring out how to lay out their stores to create *exactly* this effect.

One of the things about browsing through information on the internet is that really, all you can do is search. There are hyperlinks here and there but they have no context. Truthfully, the internet is much closer to a dump truck than a series of tubes - a pile of URLs describing a massive number of information blobs. Companies like Yahoo! have tried to impose some structure, but it's clumsy and incomplete because it's created by humans who look for things and then categorize them appropriately. From any information bit you can't really poke up your head and look around and figure out what is "near" you in the information space.

As a result, when we move about on the internet mostly we use search to find reasonable possibilities, and filter with our brains to narrow the results and find the thing we were looking for. The tools available out there don't help much with true "browsing" in any meaningful way.

If we find ways to impose graph database philosophy on the internet, it would be possible to feel like there were "neighborhoods" in which sites or pages (or other data) lived, and then look around to see what other things were nearby. If a commercial site could actually create a Target Fugue state on the internet, it would make for an enormous improvement in the user experience.

Amazon is currently the site that does the best job trying to emulate this, with "people who bought this also bought" and "based on your purchases I think you want" but it still feels forced. When I go into a bookstore, I love to wander up and down the aisles and just look at what attracts my eye. Although Amazon has 'browse' as a choice I don't really feel like I'm browsing. I feel like I'm narrowing my search, and it doesn't at all have the same feel as wandering around in a bookstore feeling my way through the stock.

I don't have any answers to this, but I'm hoping that building applications on top of a graphical database such as Freebase will make it easier to create that state. It's a hard problem, but that's the kind I like best.

September 6, 2007

Re-pacing myself

This week I started my new job at Applied Minds, and I've been down in Glendale this week meeting people, ramping up, and brainstorming what we can do. It's an amazing place, as you might imagine, filled with brilliant people with amazing ideas. But it's also a workplace with things that need improving, so I've managed, with some help, to scrounge up a server to install Socialtext on, so that I can collaborate with my management team and some other teams can use it for their projects.

It's funny, coming from a company which is all-collaboration-all-the-time to go to a company which is brilliant in so many other ways, but which hasn't spent much time thinking through ways to reduce redundancy and build shared understanding on things. Since I'm going to be a remote worker (basically the only one they have) I'm strongly motivated to create processes and systems to make it simple for the mother ship to know what I'm working on, provide feedback and participate in collaborative activities.

For the first few months, I plan to come down here for about a week each month, so that I can both establish myself as a useful AMI team member in general and take advantage of the mighty brainpower assembled here. The atmosphere here is really delightful, so that's a draw as well.

After Labor Day weekend, I was pretty darned tired, and I'm trying very hard to keep reminding myself that there's no need to rush here. I've put together a list of things I need to explore, and I've set aside two weeks to explore and experiment and write up ideas, and then we'll come back together at the end of the month to discuss the options, tune them further, and decide on an overall strategy.

It's really odd to come from a company where there was a true sense of urgency (the company struggled at various times) throughout my time there, compounded by a false sense of urgency contributed by some of the management team and by myself as well due to the nature of my position. Here, I'm supposed to take my time and be deliberate. Slowing down and taking my time isn't something I have a lot of experience with, so here's hoping I find my way there.

I was happy to see that my OpenID talk was accepted at the Pittsburgh Perl Workshop. Should be a lot of fun.

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 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.

Continue reading "Cross posting to Socialtext" »

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.

Continue reading "Moving things from here to there" »

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.

Continue reading "What kind of blog is this?" »

August 10, 2007

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.

Continue reading "Working at Nerdvana" »