May 15, 2008
Using Deki Wiki to build a social media news site
DamienH @ 6:16 pm
About a week ago I read an article written by Marshal Kirkpatrick called How to build an RSS and Blog News Site for your project. In short, Marshall basically outlined how he had built an RSS-based microsite for the JavaOne conference. The article was great, and although I believed I knew almost everything about refining RSS feeds, I actually learned a thing or two.
Towards the end of the article, Marshall started to dive into the presentation process but confessed that he was not very involved in that portion of the project. At this point, I started thinking about MindTouch Deki Wiki, and how to integrate the filtered and refined RSS feeds using the wiki’s application platform. Deki Wiki is a powerhouse when it comes to aggregating and mashing up content, so it was a fairly reasonable thought. To that end, I figured I would put a couple of demos together to show you how to use Deki Wiki to easily build a similar app. I’ll also demo some of the more advanced stuff like using Dapper to scrape and mashup web apps.
RSS presentation
It’s pretty straight forward. By using the Deki Wiki Extension Dialog (
) , you can quickly and easily display your RSS feeds as lists, tables, or tabs. Also, since the interface is a wiki, users can easily manipulate the manner in which they want their RSS feeds to display. Create a table, drop your RSS feed in there, maybe add some CSS in the markup view and off you go.
In the screen shot below, you can see that I quickly added two RSS lists into a table and clicked save. Taking Marshall’s advice, I used Google Blogsearch to find and filter my blogsearch. Unfortunately, I didn’t take the time to weed out the duplicates or format the HTML as suggested, but I know that I could have if I had the time. At Google Blogsearch I used the following two search queries:
- (MindTouch and Mozilla) - “Re:”
- (MindTouch or Deki Wiki)
Using Deki Script the RSS feeds look like this, respectively. Keep in mind you don’t have to write Deki Script unless you really want to. You can use the extensions manager to insert and manage all Deki Script.
- {{ feed.list{feed: “http://blogsearch.google.com/blogsearch_feeds?hl=en&q=(MindTouch+and+Mozilla)+-+%22Re:%22&ie=utf-8&num=10&output=rss”, max: “30″} }}
- {{ feed.list{feed: “http://blogsearch.google.com/blogsearch_feeds?hl=en&q=(Deki+Wiki)+-+%22Re:%22&ie=utf-8&num=10&output=rss”, max: “30″} }}
Using Dapper to Make a Mashup in Deki Wiki
Let’s take this a step further and integrate some other cool applications. I’ll also add some Deki Script to make it as interactive as possible. Let’s start off with two of our most beloved services, Dapper and Yelp. First, using Yelp, I decided to search around for something that interests me. I quickly found the San Diego Nightlife page. I then went to Dapper.net and pieced together my Dapp; I created the values TopTitle, TopDescription, and VenuList. It only took two minutes to create my Dapp, and then I was back over to Deki Wiki. In Deki Wiki, I clicked Edit on my page and using the using the Extension Manager I inserted my Dapp. If you look above the Extension Manger you’ll be able to see a glimpse of the Deki Script that is being created for you.
Again, here is the Deki Script that was entered to retrieve both the TopTitle and TopDescription respectively:
- {{ dapp.html{name: “YelpSanDiegoNightclub”} }}
- {{ dapp.value{name: “YelpSanDiegoNightclub”, xpath: “Top/TopDescription”} }}
Easy, huh? Let’s move along. Next, let’s take the value from our first Dapp (TopTitle) and use it in some other extensions. I’m going to use the TopTile value in a Flickr Slideshow, a Google blog search RSS Feed, and a Google Video search, and then show the list of other ’second rank’ venues. Here is the mashed up Deki Script in the same order:
- {{ flickr.slideshow{tags: dapp.value{name:”YelpSanDiegoNightclub” }, width: “250″, height: “250″} }}
- {{ google.SearchBlogs{search: dapp.value{name:”YelpSanDiegoNightclub” } } }}
- {{ google.searchvideos{search: dapp.value{name:”YelpSanDiegoNightclub” } } }}
- {{ dapp.list{name: “YelpSanDiegoNightclub”, xpath: “VenueList”} }}
As you will see below, I’ve arranged the extensions throughout the page to my liking. I floated the flickr slideshow to the right and then then listed the rest of the extensions throughout the page.
And here’s the final result! The awesome part about this example is that whenever the Yelp community decides another venue is more popular, your entire mashup is updated with the new venue’s info.
The next (more advanced) topic I’ll jump into is parameterized templates, but I’ll save that post for another day. Stay tuned!
Damien Howley
DamienH[at]mindtouch.com
@DamienH









Very cool! I do recommend checking out AideRSS.com as another layer of awesomeness too. I need to spend some time with DekiWiki, though it may be over my head technically. Either way, love what you guys are doing!
Comment by Marshall Kirkpatrick — May 15, 2008 @ 6:24 pm
Great post.
I have recently discovered DekiWiki and I am amazed with the capabilities of the platform.
I am not sure if this is the right place to post a couple of questions … but anyway.
- Just wondering if there are any available modules/extensions offering more structured intranet functionality such as calendars, polls, phone directories etc including their data entry functionality.
So far I can see that DekiWiki supports publishing and manipulation of data stored somewhere else, except its own pages but what about creating those structured data through DekiWiki? Is it out of its scope ?
- And also I am interested in installing DekiWiki in a Windows environment. Any pointers to related documentation ?
Comment by Panos Kontopoulos — May 15, 2008 @ 11:32 pm
This is definitely not out of scope. This is precisely what Deki Wiki is intended for: providing a connective tissue between enterprise systems, web-services, Web 2.0 apps, and the likes and using the Wiki interface as a canvas for presenting data and operating on data.
There are some “modules” that are floating around the community, but MindTouch will begin rolling out modules on a regular basis in the near term. Put simply, there isn’t exactly a wealth of these. Some that come to mind are Mantis, Trac, Jira, and SVN modules for software development teams. If you have suggestions about modules you would find particularly valuable please let us know.
Although there is an install guide for Windows at http://www.opengarden.org (just search for Windows or post to the Forums) MindTouch does not, yet, officially support Windows installs. We will be adding this in the next release.
Comment by Aaron Fulkerson — May 16, 2008 @ 8:12 am
Aaron thanks for the prompt response and info!
I had a quick look on the extensions you mentioned but what I understand is that you can present, filter, browse structured data that have been created, entered, maintained somewher else, in another application.
What I am looking is the capability of creating through DeikiWiki structured data right there without going somewhere else.
Imagine an extension for creating and browsing/searching/viewing employee data from a company directory fully maintained through DekiWiki. Where are these data will be stored ? How forms that manipulate these data will be created in DekiWiki ?
Most probably I am missing sth big here.
Thanx in advance, Panos
Comment by Panos Kontopoulos — May 18, 2008 @ 2:00 pm
Currently, you need to add your own external data store and code to store and retrieve the data interactively. As the storage model evolves, you’ll be able to store and query data across data sources since Deki Wiki is architected as a distributed, cloud collaboration platform.
Comment by Steve Bjorg — May 18, 2008 @ 8:34 pm
Thanx guys, for the info.
I think you are in the right way!
I also believe that wetpaint’s latest announcement about embedding their wiki (content and functionality) in your own web properties is also a great milestone for a cloud collaborated platform.
Any plans to offer similar functionality from DekiWiki in your long term plans ?
Panos
Comment by Panos Kontopoulos — May 19, 2008 @ 3:00 am
Absolutely! I think that was a very smart move on their part. They were extremely limited in what you could do, because everything had to reside on their servers. Now, only your data resides on their servers. Of course, I think that’s still wrong, but it is a good move in the right direction.
Comment by Steve Bjorg — May 20, 2008 @ 7:50 pm
@Panos
I agree, I think this new service by WetPaint is a good idea. MindTouch has already been providing a similar capability for some time now, but with a more seamless and flexible experience to what WetPaint is doing with Injected. An example is Shelfari. RWW writes about this here: http://www.readwriteweb.com/archives/wiki_business.php
With MindTouch the customers owns the data and is not being billed based on how many people view the content.
Comment by Aaron Fulkerson — May 22, 2008 @ 7:59 am
Thousands and the dazzlingly buy cytotec dead hand held.
Comment by Pwhndvve — August 9, 2008 @ 8:34 am