Archive

Plone Conference enters Second Life

I’m on my way to the annual Plone Conference which is in Seattle for the first time. I went to college in Seattle and it’s been a long time since I’ve been back to visit. I’m really looking forward to stay right down in Pioneer Square / Pikes Place market, and see friends who I haven’t seen in awhile.

I will be giving a talk entitled Multimedia and Podcasting with Plone, sitting on the Plone for Enterprises panel, giving a lightning talk about Plone4ArtistsCalendar, leading a birds-of-a-feature (BoF) about multimedia, and coordinating the after conference sprint! Not to mention catching up with all the other Plonistas who I’ve gotten to know at various Plone events and on the #plone IRC channel. Whew - it’s going to be a busy week!

200610250220
One of the interesting developments this year is the creation of a virtual Plone Conference area in Second Life, the massively multiplayer online world, boasting 1 million “residents” and growing. See more photos on Flickr.

In the virtual conference area, there are viewing stations where you can actually watch live streaming of the conference sessions. So even if you can’t make it to the physical conference you can still participate, and interact with the other people who are visiting.

Created by Christian Scholtz (aka MrTopf), the Plone Conference in Second Life is free to attend, and all you need to do is download Second Life and create a character. See Christian’s blog post for screenshots and read the press release. If you decide to teleport in, look for me - my character is Fergut Huskerdu.

Technorati Tags: , , ,

Auto-login to a remote machine

I often need to login to a customer’s box and get tired of typing my password all the time. Thankfully using private and public keys, I can SSH into the machine securely without needing to type in my password.

First I create a user and add him to the wheel group, so that he has sudo privileges.

useradd nate
passwd nate
usermod -G wheel nate

Then I login as this user and add my public key to the authorized keys. This public key can be found on my local machine in ~/.ssh/id_rsa.pub

cd ~
mkdir .ssh
vi .ssh/authorized_keys
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

Those last two lines to change the permissions are very important.

Now I can ssh into the machine, and it won’t prompt me for a password:

ssh nate@someremotebox.com

Technorati Tags: ,

Content licensing in Plone

At the recent Big Apple Sprint, we had one conference call (using iSight) with Brent Lambert from The College of Education and Human Services at Utah State University, to discuss the idea of a content licensing tool for Plone, as described in PLIP #136.

Jonah and I suggested that Brent look at Alec Mitchell’s contentratings product for an example of how to use Zope 3 annotations to add metadata to an object. By the following day, Brent already had a working example of adding a license to a piece of content via the Properties tab.

200607131406

In the attached screenshots, you can see that there is a content licensing selector in the Properties tab, and when you click on the ‘Choose’ link, the Creative Commons popup box appears where you can select a license.

200607131406-1After you select a license, your choice is fed back to the Plone edit form. So it’s a 3 click process, and has the advantage of using the up-to-date forms on creativecommons.org, so they don’t have to be maintained within the Plone product.

I think the rapid turnaround of this product is testament to the ease with which one can utilize Zope 3 technology to build truly useful tools in a componentized way.

You can browse the code in their subversion repository, and Brent assures me that this will soon be moved over to the collective subversion repository.

What’s next

The tool is currently only selecting the license, but not showing it anywhere on the view page. The tool should also embed a link to the RDF on the view page. It would be great if the tool could also include the CC license in RSS 1.0 and 2.0 feeds. The Creative Commons Web Integration Guide gives some examples for how to display the license information.

Technorati Tags: , ,

Authenticity and encryption of email using GnuPG

Encrypt mail
On a recent project for a customer, they needed to send me some keys to connect to their company VPN server. Email is not secure by default, and anyone could intercept the keys along the way which could compromise the security of their company intranet.

With the usage of GPG signing and encryption, we can not only verify the sender of the emails, but also encrypt the data so that if it were intercepted, it could not be read. These are the steps I went through to set up GPG with Apple’s Mail.

  1. Installed GNU Privacy Guard
  2. Installed GPG Keychain Access
  3. Launch GPG Keychain Access
  4. Choose to generate a new key - used all the default values
  5. Exported my public key and sent to client as .txt file
  6. Imported public key from client into GPG Keychain Access
  7. Installed GPGMail - plug-in for Apple Mail

For more information about configuring GNUPG for a variety of MacOSX email clients, read this howto: Configuring GNUPG

If you’re using Windows, take a look at GPG4Win (found via Jon Stahl’s blog)

Technorati Tags: , , , , , , ,

Windows XP running inside Ubuntu Linux and MacOSX

VMWare screenshotI was googling around for a solution to why the fonts on Ubuntu Linux are stretched on my Dell 20″ monitor, and the search words “widescreen fonts stretched ubuntu” brought up this page as the first hit.

Well, J Wynia’s blog post didn’t really solve my problem with the fonts, but it did remind me that VMWare recently made their VMWare Server software available free-of-charge, presumably in response to attention received by the open source Xen virtualization software.Thanks to the free VMWare Player, I had been running Windows XP on my Ubuntu Linux box, but after I recently upgraded to the latest Ubuntu Linux 6.0.6 (codename “Dapper Drake”), the VMWare player stopped working. I decided to try updating to the VMWare Server to see if that would solve the problem.I downloaded the VMWare Server software and installed it using ./vmware-install.pl.

This brought up a series of questions to which I replied the default. When I got to the question:

What is the location of the directory of C header files that
match your running kernel? [/usr/src/linux/include]

It wouldn’t accept the default response and said:

The path "/usr/src/linux/include" is not an existing directory.

I googled for that exact text, and this post to the Ubuntu forums came up which described how one must install the headers for the release of the kernel you have installed. (this probably explained why VMWare Player stopped working when I upgraded - the kernel headers had changed).

I typed uname -r to find out what version headers to get, and then just passed this in to avoid typos.

sudo apt-get install linux-headers-`uname -r`

Then when the question about the C header files came up, I typed in the following:

What is the location of the directory of C header files that match your
running kernel? [/usr/src/linux/include] /lib/modules/2.6.15-23-386/build/include

If you are trying this at home, you would substitute 2.6.15-23-386 for whatever version you have installed (output of the uname -r command).

After this, the install proceeded along and the very last step was to move my virtual machine file into the directory /var/lib/vmware/Virtual Machines.

I fired up the VMWare Server console, loaded my virtual machine and behold, Windows XP running inside my Linux box!

MacOSX solutions - Bootcamp and Parallels

My days running WinXP on Linux may be numbered because on thursday I’m expecting to receive a new Macbook which sports the new Core Duo chip. Using Apple’s Bootcamp software, I can run both MacOSX and Windows natively on the same machine.

However, because it’s a drag to have to reboot, I will probably run Windows in a virtual machine using Parallels. With the Core Duo processor, this will be faster than running it with VMWare on Linux.

Boston Macintosh Users Group

I’m looking forward to the BMac users group meeting tomorrow night because the topic is Windows on Intel Macs. Hopefully learn some tips and tricks, and also try to unload some old Mac gear that I’ve been trying to get rid of. Anyone want an Epson Inkjet printer or a Yamaha CD burner?

Technorati Tags: , , , , , , , , ,

Macbook ships three days early

Fedex Macbook ShipYay, the Macbook shipped 3 days earlier than expected. This means that I should get it before I leave for San Francisco! Now I need to go find out why the RAM and HD haven’t shipped yet.

To prepare for the upgrade, I’m going to clean up my Powerbook 17″ HD and figure out what apps I really need to install on the Macbook. Expect a short list to be posted within the next couple days.

Update: while the Macbook is shipping earlier than expected, it appears that it’s still not scheduled to arrive until June 19, one day after i leave for San Francisco. :( Anyone know how to request FedEx to reroute an item, or hold an item?

Technorati Tags: , ,

Scraping a jazz events calendar

As mentioned in my last post building a live music calendar, I’m disappointed that the websites that list jazz events in Boston don’t offer the data as an RSS or iCal feed. One example of this is the WGBH Jazz Calendar, which has probably the most comprehensive listing of jazz events in the Boston area.

In my talk about Plone4Artists at EuroPython 2005, I mentioned a tool called Scrape ‘n’ Feed, which will scrape a website and generate an RSS feed. Well, it’s been a year since I first discovered this tool, and now I’m revisiting it to see if I can make it work. Here is my first foray into this scraping business.

ScrapeNFeed depends on Beautiful Soup and PyRSS2Gen which are easily installable on Ubuntu Linux with:

apt-get install python-pyrss2gen
apt-get install python-beautifulsoup

Once I installed these two packages, I downloaded the ScrapeNFeed.py script and created the following file ‘getwgbhfeeds.py’:

#!/usr/bin/env python
import BeautifulSoup
from PyRSS2Gen import RSSItem, Guid
import ScrapeNFeed

class WGBHFeed(ScrapeNFeed.ScrapedFeed):    

    def HTML2RSS(self, headers, body):
        soup = BeautifulSoup.BeautifulSoup(body)
        eventTable = soup.firstText('Sort By:').findParent('table')
        tds = eventTable.fetch('td',{'class':['searchres', 'searchres_off']})
        items = []
        for item in tds:
            link = item.findNext('b')
            eventLink = self.baseURL + link.a['href']
            if not self.hasSeen(eventLink):
                eventTitle = item.a.string
                eventDate = item.contents[0].strip()
                eventLocation = item.contents[5].strip()
                items.append(RSSItem(title=eventTitle + '(' + eventDate + ')',
                                     description=eventLocation,
                                     link=eventLink))
        self.addRSSItems(items)

WGBHFeed.load("WGBH Concerts",
                 'http://www.publicbroadcasting.net/wgbh/events.eventsmain?
action=showCategoryListing&newSearch=true&categorySearch=5596',
                 "See all the jazz concerts posted to the WGBH calendar",
                 'wgbh.xml',
                 'wgbh.pickle',
                 managingEditor='name@domain.com (First Last)')

Run the script with ./getwgbhfeeds.py and it will output a file wgbh.xml , which is in the RSS 2.0 format. You can then open this file using your RSS reader of choice, and view all the Boston jazz events.

Once thing that I noticed is that some of the items in the list have an extra <br /> which means the title doesn’t get read in correctly. I’ll have to find a way to ignore the <br /> which I sure will be fairly simple with BeautifulSoup.

What’s next

At the OPMLCamp a few weeks ago, I met Mike Kowalchik, the creator of grazr. After seeing this tool, I immediately thought about how useful it would be for generating a browseable directory of event listings. You simply supply grazr with an OPML file, and it will then display all the RSS feeds and their entries. After I get a couple more event listing sites scraped, I’ll generate the OPML file and try them out with grazr.

Mike also mentions on his blog about Tom Morris’ idea about using grazr to ‘kill myspace’ by creating a better way for independent bands and artists to self promote using OPML. Note to self: follow up with Tom to discuss this idea further. I love the integrated MP3 player in his grazr box. Update: left him an Odeo message.

Technorati Tags: , , , , , ,

How to Feel Miserable as an Artist

Remind yourself. From wish jar journal found via Michael Martine’s blog.
 Wp-Content Miserableartist

Technorati Tags:

Building a live music calendar

While reading from Derek Siver’s O’Reilly blog, I came across Mark Hedlund’s talk Entrepreneuring for Geeks which described how the more technically minded can move into making companies of our own. He started out the talk with a set of proverbs.

The three proverbs that struck close to home for me were:

  • pay attention to the idea that won’t leave you alone.
  • build what you know
  • momentum builds on itself

Pay attention to the idea that won’t leave you alone

Several events have occurred in the past two weeks which have echoed these words in my mind.

During the BarCampBoston I spoke with other geek entrepreneurs about the problem of finding live music, and the guys from tourb.us told me about how they are scraping venue’s sites to get concert listings. They are providing a service that answers a particular need - when is my favorite band coming to town?

This triggered a memory of an exchange I had more than a year ago with trombonist Phil Wilson at the Jazz Journalists Association panel at Schullers Jazz Club. Jon Hammond organized a panel discussion on the topic of Boston as a Launching Pad for a Jazz Career. I asked the panel what kind of online tools or services could be provided to re-ignite the jazz scene in Boston. And Phil said that he would like to see a service that would notify him when a musician was going to be performing.

Then at the last Python meetup, Dan Milstein raved about the python scraping library BeautifulSoup and described how capable it was at scraping baseball scores off a website. I played around with BeautifulSoup awhile ago, but never actually built anything using it.

Scratch an itch

“Build what you know” affirms that the most basic advice of idea generation is to scratch an itch you have yourself. Now I have an itch to scratch. I love going out to hear live music, especially jazz - but there is no single site that aggregates the concert listings. There are several sites I must visit:

  • MyRootdown Improv Music Calendar is a great site built by graphic designer and improv enthusiast Shawn dos Santo. Shawn is doing a great job of posting events he hears about, but there’s no way for people to post their own gigs
  • The WGBH Jazz Calendar is good but again, it doesn’t have an RSS/iCal feed so I have to manually visit the site everytime I want to see who’s playing.
  • Each and every venue has their own concert listing page (Scullers, Regattabar, Wallys, Berklee, Reel Bar, etc.) and of course, none of them have RSS or iCal feeds.
  • I’m sure there are others that I don’t know about

The basic problem here is that there is a fragmentation of information. Since none of the sites publish their event listings in any sort of structured way (RSS, iCal, hCalendar), it’s tedious to monitor these listings and thus hard to stay on top of what’s going on in the Boston jazz scene.

The “Pull” method

Immediately after hearing Phil’s suggestion, my technical mind started churning as I thought about generating dynamic RSS feeds based on artist or band name, and then using something like Feedblitz to turn those RSS feeds into email notifcations. As much as us geeks would like to think it’s true, the average person still has no idea what an RSS feed is or how to use it. Email is still the lowest common denominator.

But the question still remains how to get the data into a system in the first place. It is not likely one can expect musicians to enter their gig listings themselves. And here is where Beautiful Soup comes in - if I scrape the event listing sites, I can put the data into a system, extract the metadata (band, location, date/time, cost, etc.) and syndicate these concert listings as RSS feeds and subsequently email notifications.

There is even a python script called Scrape ‘n’ Feed which will automatically turn a page scraped with BeautifulSoup into an RSS feed. This is why I love python - there is almost always a library that does exactly what you want. And there is also a python script to convert iCal into RSS.

The “Push” method

Now suppose for a moment that one could get musicians to enter their gigs into some sort of system, and what if you could offer a service, let’s call it GigBlast, which would push their gig information out to a bunch of event listing services: WGBH, eventful.com, upcoming.org, boston.craigslist.org, meetup.com, etc. using the API provided by those services or in the case of WGBH which has no API, use python libraries such as clientform to submit the form.

This would make it easier for musicians to get the word out about their gigs, give fans a tool to be informed when these musicians are performing, and ultimately get more people to go out to hear music which would create more demand for live music. Maybe I’m an idealist to think that it will have such far reaching effects, but even if no one else uses this service, at least I’ll be scratching my itch!

Momentum builds

Stay tuned for more thoughts on publishing events to the web using Apple’s iCal. This will simplify the data entry process even more as musicians can simply add their event info to iCal, and in the background it’s it’s transparently uploaded to their website and automatically pushed out to the event listing services.

I also want to explore the use of microformats, such as hCalendar, which I think have a better chance of being adopted among musicians, venues and bloggers since it is fairly easy to implement - just a few changes to the HTML template. Pages formatted with hCalendar are a breeze to scrape using Technorati’s events feed service and can be searched using Technorati’s experimental Event Search tool.

Well, after many days of sideways rain, the sun has finally come out in Boston, so I’m going for a jog in the Fens.

Technorati Tags: , , , , , ,

Bicycle taxis come to New York City

200606111234New York City is finally getting bicycle rickshaws as an alternative to traditional motorized taxis. Copenhagen has had these for years (Cykel Taxi, Copenhagen Rickshaw) and they’re a great way to see the city.

It would be interesting to see if the wildly successful free city bikes program which was started 11 years ago in Copenhagen, would work in NYC.

“Taking the bikes beyond central city limits releases a hefty fine, but some of the bikes have reportedly been seen as far away as New York City and the French Riviera. One bike even made it on board Air Force One - a special gift from the city to President Clinton when he visited in 1997.” (Source: The Copenhagen Post 4/28/06)

Technorati Tags: ,