Popular Tags:

Content licensing in Plone

July 13, 2006 at 12:09 pm

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.


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

July 10, 2006 at 3:46 pm

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

June 13, 2006 at 12:44 pm

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:

It wouldn’t accept the default response and said:

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.

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

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

June 12, 2006 at 9:12 am

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

June 12, 2006 at 12:48 am

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:

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

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

June 12, 2006 at 12:09 am

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

Technorati Tags:

Building a live music calendar

June 11, 2006 at 3:04 pm

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

June 11, 2006 at 12:00 pm

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: ,

Analyzing traffic with Google Analytics and Feedburner

June 10, 2006 at 9:26 pm

Google Analytics

I signed up for Google Analytics right when I heard about it, and have been using it to monitor the traffic on several of my sites. I still use the excellent open source awstats because it is more configurable and offers a finger grain of control, but Google Analytics is a great way to get a snapshot of the traffic patterns on your site. Measuremap is also an interesting tool, but they are currently not offering new accounts. I’ve signed up to be notified when they start offering accounts again.


Tom Parish, an expert in search engine optimization (SEO), encouraged me to try out Feedburner, and I have to say, it is very impressive. Feedburner basically monitors how much traffic your feed is getting, and shows you how many people are subscribed to it. It can even tell you how many people clicked through to each blog post.

Feedburner Services


FeedBurner has something called SmartFeed which translates your feed on-the-fly to RSS or Atom, depending on what kind of reader the person is using. The BrowserFriendly feature renders the feed in a human-readable format, instead of the typical XML format which is virtually useless for humans. FeedFlare adds a bunch of quick links to each post to make it easier to bookmark the post and see other pages which link to the post.

The Photo and Link splicer tool pull in all your photos and bookmarks from Flickr and del.icio.us and merge them into your blog entries. I didn’t really want those cluttering up my blog posts, so I opted to leave this feature disabled. But I might create a new feed which includes blog posts, photos and links to get a “stream” of everything I am submitting. There is also something called Amazon ID burner which will auto-insert your Associates ID into any links to Amazon.com catalog items it finds in your posts.

Feedburner Feed Replacement (WordPress plugin)

I installed the Feedburner Feed Replacement which forwards all feed traffic to Feedburner while creating a randomized feed for Feedburner to pull from. This provides a permanent feed URL, so that if I ever decide to change my blogging software and the blog feed changes, I can just tell Feedburner about the new URL, and my subscribers don’t have to re-subscribe.

WordPress Reports

Wordpress ReportsI just discovered another plugin today called WordPress Reports which generates reports from Google Analytics and Feedburner. Here is a screenshot of the Google Analytics data, but I couldn’t get the Feedburner stats to show up because it said that my account isn’t enabled for Awareness API. Maybe I need to upgrade to the paid account?

Technorati Tags: , ,

Listening for messages using listen

June 10, 2006 at 4:03 pm

listen screenshotAlec Mitchell’s listen product is not only an excellent example of how to use the latest Zope 3 technologies in Plone, it’s also a very useful product.Listen is a mailing list management application that integrates into Plone. It’s based on Maik Jablonski’s Mailboxer product which has been around a long time and proved to be very stable.

PloneMailboxer was an attempt to integrate Mailboxer into Plone, but it hasn’t seen much development in over a year.

What I like about listen is that users can subscribe either as a user logged into the Plone site, or by simply providing an email address (while browsing the site anonymously). They can also post new messages and reply to existing messages through the Plone interface. All messages posted through the website are relayed to the mailing list, and vice versa.It took awhile to set it up all because it requires some configuration on the Linux server. Here is a summary of my experience.

1.Install listen

I grabbed the listen bundle and symlinked in all the products:

Note: I put all of my products in a global $PRODUCTS directory, usually in /usr/misc/zope/products
Then for each Zope instance, I symlink the products I need into that instance’s products directory. This way I only have to update the products in one place for all my Zope instances.

2. Setup a test instance

Restarted Zope and made a test Plone instance ‘mysite’. Installed listen and made a listen instance ‘mylist’
So the listen instance is now at: http://www.domain.com/mysite/mylist
The email address for this list will be: mylist@domain.com

3. Set up the smtp2zope script

4. Make the alias for the mailing list

Put the following in .qmail-mylist:

Note: This step took the longest time because I couldn’t figure out where to make the .qmail-mylist file. First I put it in /var/qmail/alias, but it wasn’t getting read from there. Since my box is serving multiple domains, each domain has it’s own qmail aliases. It also didn’t help that all the instructions for setting up Mailboxer assume that you are running postfix or sendmail. Luckily I found this howto which explained how to do it for qmail.

If you are using postfix or sendmail, then you need to edit the ‘/etc/aliases’ file and add the following:

Once you save this file, you need to run the command ‘newaliases’ to refresh the aliases. The README.txt explains all this pretty well.

5. Configuring the Mailhost

By default, Plone now ships with SecureMailHost. I wasn’t able to get listen to work with SecureMailhost nor the recommended MaildropHost due to the error described in this issue. I deleted the SecureMailHost object in the Plone root, and added a normal Mailhost object. I left the SMTP authentication fields empty, and then it worked. If anyone knows why it’s giving an sslerror, please respond to the issue in the tracker.

What’s next?

I’d like to migrate all the mailboxer archives from lists.plone4artists.org over to use listen, but I’m not sure how easy this will be. I’d also like to be able to search the messages in the archive. Currently, they don’t appear in the search results when I use Plone’s LiveSearch. Although, this might be intentional?

Technorati Tags: