<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><description>SwiftRiver is an open source intelligence platform that helps users manage realtime data from email, sms, twitter and the web.</description><title>Swiftly.org | Filtering Realtime Datastreams</title><generator>Tumblr (3.0; @swiftriver)</generator><link>http://blog.swiftly.org/</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/swiftriver" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="swiftriver" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://tumblr.superfeedr.com/" /><feedburner:emailServiceId xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">swiftriver</feedburner:emailServiceId><feedburner:feedburnerHostname xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Moving on from SwiftRiver and Ushahidi</title><description>&lt;a href="http://gosdot.com/post/7104541418"&gt;Moving on from SwiftRiver and Ushahidi&lt;/a&gt;: &lt;p&gt;&lt;a href="http://gosdot.com/post/7104541418" target="_blank"&gt;gosdot&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;img src="http://farm6.static.flickr.com/5304/5888471295_3a4ecf4515.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Directing the &lt;a target="_blank" href="http://swiftly.org"&gt;SwiftRiver Initiative&lt;/a&gt; to where it is today has been fantastic. The project has matured a lot, in no small part to the volunteer developers and thinkers who contributed over the past two years. My focus with Swift from the beginning was to construct a platform that attempts to…&lt;/p&gt;
&lt;/blockquote&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=KDpy98YtZCo:5GFj5mXLU9U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=KDpy98YtZCo:5GFj5mXLU9U:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/7104693969</link><guid>http://blog.swiftly.org/post/7104693969</guid><pubDate>Thu, 30 Jun 2011 22:12:06 -0400</pubDate><category>swiftriver</category><category>swiftly</category><category>ushahidi</category><category>knc</category></item><item><title>Some Reflections on Sweeper from N.E.A.T. Nigeria</title><description>&lt;p&gt;&lt;img width="500" src="http://www.uiowa.edu/~africart/toc/countries/image/Nigeria.gif"/&gt;&lt;/p&gt;
&lt;p&gt;In April we were contacted by a group out of Georgia Tech, M.I.T. and student on the ground in Nigeria about the, then, upcoming elections.  This group of individuals, together working as N.E.A.T. (the Nigerian Election Aggregation Team) wanted to run a campaign that mashed up data from several different Ushahidi deployments, Twitter and other sources, displaying them in their own Ushahidi deployment.  They ended up writing a lot of custom code but this was the first ‘stress test’ of the SwiftRiver platform and our Sweeper application to date.&lt;/p&gt;
&lt;p&gt;The following is a review of the N.E.A.T. team’s experiences with Sweeper.  It was written by Thomas Smyth from Georgia Tech just after their election project was complete on May 2:&lt;/p&gt;
&lt;blockquote&gt;
&lt;h2&gt;What Sweeper Did Well&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Quick setup&lt;/strong&gt;: Jon had our instance up in running in what seemed like a heartbeat. This was much appreciated.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reliability&lt;/strong&gt;: Sweeper stayed up pretty reliably as long as I didn’t break it!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Auto-Tagging&lt;/strong&gt;: This feature was pretty neat and our system used Sweeper’s tags for meta-analysis.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support&lt;/strong&gt;: Matt was available consistently for in-depth help and scheming. We appreciated this.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Issues With Sweeper&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Bugginess&lt;/strong&gt;: Several major bugs were encountered, e.g. the duplication service. But this is to be expected for a young project.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Twitter lag&lt;/strong&gt;: Twitter updates weren’t showing up for many minutes. Since Twitter was our main source of timely information, this was a big problem. We ended up implementing our own scraper using Twitter’s stream API, which has worked brilliantly. Matt and I have discussed this.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Searching&lt;/strong&gt;: Sweeper currently doesn’t allow searching of reports, and this was a desired feature which we implemented. We also implemented a ‘saved search’ feature, which turned out to be quite useful. It allows the user to specify a search string (such as “guns or bombs or knives”) to be “tracked”. The system then searches all incoming reports and maintains a time series visualization. This allows a user to see what topics are ‘spiking’. Something like this would fit nicely in the the analytics panel in Sweeper.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Analytics panel&lt;/strong&gt;: There are a few good things here but the interface could be a lot denser, so that more useful analytics could be added. For instance, top tags could be represented with a compact table rather than a bar chart. Charts should only be used in cases where the visual representation provides a clear benefit. Pie charts are usually unnecessary, etc.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Geolocation problems&lt;/strong&gt;: The automatic geolocation service was quite dodgy. I didn’t do any actual counting but I’d say upwards of half the results were wrong. I think it’s a difficult thing to do automatically. So much ambiguity, etc. We ended up building a custom solution for geolocation, incorporating polling booth data (120k of them!) from INEC. The system could automatically recognize a polling unit code like 03/04/12/013 in a tweet, and translate that into a geolocation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Scanning interface&lt;/strong&gt;: The main interface of sweeper, where users quickly scan through reports and categorize them, could be more efficient. It’s not clear why each report needs to take up so much space, and why the interface doesn’t scale to fit the whole screen. The animations were also somewhat disorienting. In our system, we tried a system where users ‘checked out’ a batch of 10 reports and quickly scanned them in a compact table format, marking relevant ones with a checkbox. This seemed to work nicely, and didn’t require (I think) as many requests to the server. In general, I think Sweeper’s interface could be tightened a lot. Users are more likely to be experienced, frequent visitors, rather than occasional ones (I think). Therefore you can make it a little more efficient and specialized than a general purpose website. I think users would appreciate this. I’d be happy to consult further here if there is interest.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code and documentation&lt;/strong&gt;: Much of the functionality described above could perhaps have been added to Sweeper. However, we found it hard to get started on adding plugins. The codebase could be better organized so that it is clear where code for different components should go. The code itself could also be cleaner in places. Also, documentation needs to be available. But again, we realize Sweeper is a young project and these things are surely on the TODO list!&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;That’s all I have for now guys. Let me know if you have any questions. Many thanks for everything. Let’s keep talking!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;This is great feedback and some of it we’ve already begin working on, while the rest (both the code and the suggestions) have been added to our roadmap.&lt;/p&gt;
&lt;p&gt;(Photo from &lt;a href="http://www.uiowa.edu/~africart/toc/countries/Nigeria.html" target="_blank"&gt;&lt;a href="http://www.uiowa.edu" target="_blank"&gt;http://www.uiowa.edu&lt;/a&gt;&lt;/a&gt;)&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=81Sd9Xf7UgM:e_2WRF36g88:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=81Sd9Xf7UgM:e_2WRF36g88:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/6905010534</link><guid>http://blog.swiftly.org/post/6905010534</guid><pubDate>Sat, 25 Jun 2011 11:55:55 -0400</pubDate><category>mit</category><category>knight</category><category>georgia tech</category><category>n.e.a.t.</category><category>nigeria</category><category>elections</category><category>Sweeper</category></item><item><title>Knight News Challenge Grant!</title><description>&lt;p&gt;It’s truly an honor to accept a $250,000 grant from the Knight Foundation for the SwiftRiver project!  It’s the culmination of a long journey that began in 2008 but evolved in 2010 when I joined the project as (product designer) and later Matthew Griffiths (lead developer).&lt;/p&gt;
&lt;p&gt;Swift is an open-source initiative who’s goal is to &lt;a href="http://blog.swiftly.org/post/6321269087/algorithms-augmenting-human-decisions" target="_blank"&gt;make the process of vetting information more efficient&lt;/a&gt;.  The project to date has progressed well thanks in no small part to the following people: Matthew Griffiths (&lt;em&gt;so important to this project I mentioned him twice&lt;/em&gt;), Ahmed Maawy, Charl Van Neikerk, Heather Ford, &lt;a href="http://blog.swiftly.org/post/2905826993/localizing-news" target="_blank"&gt;Vladimir Ermakov&lt;/a&gt;, The Ushahidi team, Omidyar Networks, Chris Blow, Ed Bice, Kaushal Jhalla, Neville Newey, Edmar Ferreira, Pete Warden, Patrick Meier, Anahi Ayala, Ethan Zuckerman, the TED staff, Google’s 2010 Summer of Code Participants (&lt;a href="http://blog.swiftly.org/post/966427022/summer-of-swift-mang-git" target="_blank"&gt;Mang-Git&lt;/a&gt;, &lt;a href="http://blog.swiftly.org/post/1124794044/summer-of-swift-soe" target="_blank"&gt;Soe&lt;/a&gt;, &lt;a href="http://blog.swiftly.org/post/972146138/summer-of-swift-nishith-rastogi" target="_blank"&gt;Nishith Rastogi&lt;/a&gt;), the Guardian’s Activate staff, Product(RED) and many others. This project would be nowhere without you all so thanks for making it happen.&lt;/p&gt;
&lt;p&gt;For many of us, this project represents a new way of democratizing access to the tools for understanding and vetting information which is needed by Ushahidi, journalists, and many others.&lt;/p&gt;
&lt;p&gt;&lt;iframe src="http://player.vimeo.com/video/25222167?title=0&amp;byline=0&amp;portrait=0" width="466" height="350" frameborder="0"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=IFsHOwnrcE0:9eoRlktPKBg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=IFsHOwnrcE0:9eoRlktPKBg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/6826984385</link><guid>http://blog.swiftly.org/post/6826984385</guid><pubDate>Thu, 23 Jun 2011 10:41:00 -0400</pubDate><category>knight</category><category>news</category><category>guardian</category><category>TED</category></item><item><title>Open Source Bookmark Curation</title><description>&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2185/5761391731_6ec282e6c9_m.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;With the latest release of Sweeper, you can roll your own bookmarking service.  This is really powerful when you start activating plugins like our auto-tagger SiLCC or our our Push plugins which can output all of your bookmarked content as a feed that can be consumed by other applications.&lt;/p&gt;
&lt;p&gt;We call this little plugin Quiver. It’s where you manually collect and store information using Sweeper. Essentially it turns Sweeper into a your free and opensource Delicious clone, with all the contextualization and aggregation features that people have come to love it for.&lt;/p&gt;
&lt;p&gt;So how does it work?  It’s simple! Just download and install any version of Sweeper following the current release of &lt;a href="https://github.com/downloads/ushahidi/Sweeper/Sweeper_V0.3.2.zip" target="_blank"&gt;v0.3.2 which can be found here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you’ve done that, go to the ‘sources panel’.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2695/5819805324_2c3ba3b542_o.png"/&gt;&lt;/p&gt;
&lt;p&gt;Select ‘Quiver’ from the list.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3656/5819243633_5c0652f60d_o.png"/&gt;&lt;/p&gt;
&lt;p&gt;Drag the bookmarklet to your browser bar.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm3.static.flickr.com/2726/5819805368_3b9fb60eed_o.png"/&gt;&lt;/p&gt;
&lt;p&gt;Done! Sweeper is a tool for the curation of real-time media.  Now the things you find interesting can be mashed up with the content you’re aggregating from the web, twitter, email and other feeds!  It’s particularly useful for journalists or researchers who need the real-time content, but who want to augment that with their personalized interests and findings.&lt;/p&gt;
&lt;h2&gt;&lt;a href="http://swiftly.org" target="_blank"&gt;Get it from Swiftly.org&lt;/a&gt;&lt;/h2&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=9WuuagBnlbg:cxJ5KntAGY8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=9WuuagBnlbg:cxJ5KntAGY8:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/6402230884</link><guid>http://blog.swiftly.org/post/6402230884</guid><pubDate>Fri, 10 Jun 2011 20:54:00 -0400</pubDate><category>bookmarklet</category><category>journalism</category><category>news</category><category>sweeper</category><category>content</category><category>swiftriver</category><category>curate</category></item><item><title>Algorithms Augmenting Human Decisions</title><description>&lt;p&gt;Here’s an update about the SwiftRiver platform from PDF11 which I had the pleasure of speaking at yesterday. My slides are below and &lt;a href="http://www.slideshare.net/Ushahidi/crowdsourcing-102-mining-realtime-data" target="_blank"&gt;here you can find video of my presentation&lt;/a&gt;. &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title="Crowdsourcing 102: Mining Real-Time Data" href="http://www.slideshare.net/Ushahidi/crowdsourcing-102-mining-realtime-data" target="_blank"&gt;Crowdsourcing 102: Mining Real-Time Data&lt;/a&gt;&lt;/strong&gt; &lt;iframe scrolling="no" marginheight="0" marginwidth="0" frameborder="0" height="355" width="425" src="http://www.slideshare.net/slideshow/embed_code/8233627"&gt;&lt;/iframe&gt; &lt;/p&gt;
&lt;p&gt;The summation of the talk is that the Swift project has been assigned a very complex and incredibly difficult task: to verify and contextualize data from the mobile and social web.  How do we do this, well this seems to be the part that confuses people.  It’s not any of our apps, and it’s not any of our individual APIs that we rely upon to do this.  It’s the combination of all these things together, as part of one robust algorithm that tries to digitally reconstruct the real-world context, using the features extracted from the content t prioritize and de-prioritize information relevant to that context.&lt;/p&gt;
&lt;p&gt;I like to refer to this as &lt;strong&gt;&lt;a href="http://blog.swiftly.org/post/1263230167/crowdsourcing-and-chaos-theory" target="_blank"&gt;folksonomic triage&lt;/a&gt;&lt;/strong&gt; where layers of historic, social, temporal, geospatial and other types of information are layered one another to perform a function, and the system (through a process called active learning) then learns how to improve form the user’s interaction.  What this attempts to do is allow the human to give the machine algorithms some insight into the types of content they prefer, and the types of content they dont.  A statistical profile of the content features of each type is recorded, with varying degrees of nuance in-between including accounting for bias, crosstalk, irrelevancy and falsehoods.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3095/5810892738_7965d5175c.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;Some of this happens on the application side, some of it happens on the logic/cloud side of things.  This is because it’s very important that user understand that the platform is there to serve them, and not the other way around; algorithms augmenting human decision making.  This means we’ve abstracted some elements of the system logic (the elements that everyone needs to re-use over and over again) while the things specific to the use of the platform, are defined in the UI.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Usecases&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We’re really excited to have had a number of really amazing partners new and old using the platform.  This includes groups &lt;a href="http://blog.swiftly.org/post/6319873998/building-a-peoples-newswire-with-newsti-ps" target="_blank"&gt;like Newsti.ps&lt;/a&gt; who are building a ‘people’s newswire’ using the Swift products.&lt;/p&gt;
&lt;p&gt;There are also some really big uses that are occurring.  For instance &lt;a href="http://www.bbc.co.uk/news/technology-13525440" target="_blank"&gt;this BBC article profiles the PAX&lt;/a&gt; system that is using our platform to power a conflict early warning system.  They want to index massive amounts of data from around the world and then use that data to spot historic patterns and trends that then can be used to demonstrate confidence in future patterns.&lt;/p&gt;
&lt;p&gt;One of our favorite uses of the Swift platform to date was Product (RED)’s use last year to mashup large quantities of social media activity to power their &lt;a href="http://blog.swiftly.org/post/2080897388/red-uses-swiftriver-for-world-aids-day" target="_blank"&gt;Turn The World (RED) campaign&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There have been many more uses that we can’t talk about yet, but hopefully those become pubic soon.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Some Numbers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;There are currently eight different code repositories housing the greater Swift project.  Each of these API elements is tackled as if it were a single problem.  This includes code for location disambiguation, natural language processing, influence detection, reputation monitoring and duplication filtering.  You can find more about them here - &lt;a href="http://blog.swiftly.org/post/5788873594/resources-for-developers" target="_blank"&gt;&lt;a href="http://blog.swiftly.org/post/5788873594/resources-for-developers" target="_blank"&gt;http://blog.swiftly.org/post/5788873594/resources-for-developers&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;These combined repos contain around 150,000 lines of code (not including frameworks like Kohana)&lt;/li&gt;
&lt;li&gt;Over 7,000 downloads of Sweeper to date&lt;/li&gt;
&lt;li&gt;Which theoretically means at least 7,000 users of our APIs&lt;/li&gt;
&lt;li&gt;Sweeper users tend to aggregate thousands of items of content over the life of a deployment  which means we’ve taken around 70,000,000 items of unstructured data and done things to it like add location, tags or filtered the duplicates.  That’s a very liberal extrapolation, but if gives you a sense of the amount of data we’re dealing with.&lt;/li&gt;
&lt;li&gt;As the project moves forward, and all our APIs are finally completed, this number will grow exponentially.  With RiverID alone (which tracks the reputation of content and people online) we expect to be indexing over half a billion items of content and actions from the social web alone by the end of the year.  That’s just one API, the others will also need to scale on equal terms.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Photo by &lt;a href="http://www.flickr.com/photos/fabola/5810892738/in/set-72157621907184968" target="_blank"&gt;Fabrice Florin&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=vcfx_BqAwBM:AuI2cSKfgXQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=vcfx_BqAwBM:AuI2cSKfgXQ:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/6321269087</link><guid>http://blog.swiftly.org/post/6321269087</guid><pubDate>Wed, 08 Jun 2011 11:34:00 -0400</pubDate><category>swift</category><category>billion</category><category>content</category><category>augment</category><category>news</category><category>journalism</category><category>real-time</category></item><item><title>Building a people's newswire with Newsti.ps</title><description>&lt;p&gt;[&lt;em&gt;Guest blog post by Jenka Soderberg, a 2011 &lt;a href="http://knight.stanford.edu" target="_blank"&gt;Knight Fellow at Stanford University&lt;/a&gt; and Evening News Director at &lt;a href="http://www.kboo.fm" target="_blank"&gt;KBOO Community Radio&lt;/a&gt; in Portland, Oregon. She can be reached at jenka [at] stanford [dot] edu]. This is a cross-post from the &lt;a href="http://blog.ushahidi.com/index.php/2011/06/07/using-swiftriver-to-confirm-newstips/" target="_blank"&gt;Ushahidi blog&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;When I first started working on &lt;a href="http://www.indymedia.org/" target="_blank"&gt;&lt;a href="http://www.Indymedia.org" target="_blank"&gt;www.Indymedia.org&lt;/a&gt;&lt;/a&gt; in 2000, I was really excited about the platform it provided: a way for people who witnessed news events to immediately publish text, audio, video and photos to an OPEN newswire.  This was unprecedented on the web at that time, and led to an explosion of open multimedia content-posting sites.  Since its inception at the World Trade Organization protests in Seattle in 1999, the Independent Media Center expanded into over 200 local sites worldwide, all funneling featured content into the main (global) site &lt;a href="http://www.indymedia.org/" target="_blank"&gt;&lt;a href="http://www.indymedia.org" target="_blank"&gt;www.indymedia.org&lt;/a&gt;&lt;/a&gt;.  In many ways, this could represent the way news organizations operate in the future – but most of the major news companies haven’t caught on to this trend just yet.&lt;/p&gt;
&lt;p&gt;I got into the world of journalism because I didn’t trust the media.  Time and again, I’d read, hear or watch news stories that were grossly inaccurate, one-sided and oversimplified.  So I took seriously the slogan, “Don’t hate the media, BE the media”, and helped launch a bunch of indymedia centers and microradio stations all over the world, always with the hope of giving voice to the voiceless, allowing people to tell their own stories and to share in the narrative that was developing about them without the often-damaging involvement of advertising dollars and managing editors who presume to dumb things down for audiences they believe they have to entertain as well as inform.&lt;/p&gt;
&lt;p&gt;Now, with more and more people turning away from traditional media to get their news online (see chart), it seems those audiences, about whom so many assumptions were made by the management of media corporations, are trying to find their own way in the new media world and find the news that they think is important and valuable.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.ushahidi.com/wp-content/uploads/2011/06/Picture-8.png" target="_blank"&gt;&lt;img class="size-medium wp-image-4374 aligncenter" title="Picture 8" src="http://blog.ushahidi.com/wp-content/uploads/2011/06/Picture-8-500x415.png" width="500" height="415"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Unfortunately, this often means that people seek out only news sources that confirm and uphold their existing points of view, and may be just as full of inaccuracies, speculation and oversimplification as the news media that they were trying to escape.&lt;/p&gt;
&lt;p&gt;How can we get through the mess of misinformation to find the real tips of breaking news events, as they’re happening, and get this information out to as broad an audience as possible?&lt;/p&gt;
&lt;p&gt;I’ve been working with a team at Stanford this year to use Ushahidi’s &lt;a href="http://swiftly.org" target="_blank"&gt;Swiftriver&lt;/a&gt; platform, and specifically Sweeper (one of the multiple tools in the Swiftriver toolbox) to try to extract real newstips from the deluge of 140-character texts and tweets, and try to figure out which newstips are real and accurate.  Our project description and current newswire is at &lt;a href="http://www.newsti.ps/" target="_blank"&gt;&lt;a href="http://www.newsti.ps" target="_blank"&gt;www.newsti.ps&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.newsti.ps/" target="_blank"&gt;&lt;img class="size-full wp-image-4377 aligncenter" title="Newstips" src="http://blog.ushahidi.com/wp-content/uploads/2011/06/Picture-10.png" width="336" height="189"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We’re implementing this in the Occupied Palestinian Territories, an area where many news incidents are under-reported in the US, and others are over-reported, giving US audiences a skewed perspective of the reality on the ground.  We’re using the Swiftriver platform to skim the web and twitter for keywords that are then filtered by keyword, location, reputation and duplication and organized into a database.  Our reporters in different parts of the Palestinian Territories (the West Bank, Gaza and Jerusalem), can follow up on the most poignant of these tips and verify their accuracy.  These reporters have created the International Middle East Media Center (&lt;a href="http://www.imemc.org/" target="_blank"&gt;&lt;a href="http://www.imemc.org" target="_blank"&gt;www.imemc.org&lt;/a&gt;&lt;/a&gt;), currently the most widely-read English-language news site based in the Palestinian Territories.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.ushahidi.com/wp-content/uploads/2011/06/Picture-9.png" target="_blank"&gt;&lt;img class="size-medium wp-image-4376 aligncenter" title="Picture 9" src="http://blog.ushahidi.com/wp-content/uploads/2011/06/Picture-9-500x436.png" width="500" height="436"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;We’re also working on a way to allow people who witness news events but don’t have the luxury of a smart phone yet (only 2% of cellphone users in the Palestinian Territories have smart phones, and 3G is extremely spotty), to send texts and photos directly into our system as well.  For translation of Arabic texts, we’ve solicited the help of the crowdsourced translation team of &lt;a href="http://www.meedan.net/" target="_blank"&gt;&lt;a href="http://www.meedan.net" target="_blank"&gt;www.meedan.net&lt;/a&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Like with Indymedia, we think that this work can be an alternative to the mainstream media – although, as always, they are free to use these news stories, it seems unlikely that many will.  When news corporations are focused on selling advertising dollars instead of providing accurate news for their audiences, they will continue to go the way of the dinosaurs, as they are doing.  Unfortunately what we’re losing right now are lots of good, investigative news reporters who held politicians’ feet to the fire, reported on breaking news events and local issues, investigated wrongdoing by large companies, connected audience members with the stories of people in different circumstances far across the globe, but with whom they could relate due to the strength of the writing and storytelling.  What we’re left with right now, to a large extent, are cable news channels whose focus is on entertainment and advertising, and vitriolic talk radio that exuberantly embraces speculation, rumor and misinformation over fact-checked, accurate news reports.  On the local news front, AOL’s newest branchild, patch.com, threatens to replace real local reporting with half-hearted, badly-written reports that are unapologetically inaccurate.&lt;/p&gt;
&lt;p&gt;Can we get a ‘people’s newswire’ based on eyewitness reports of newsworthy events?  I believe we can – if we combine the automation of systems like Swiftriver, the data visualization possibilities of tools like Ushahidi, and the insight of trained reporters who can follow up on potential leads.  Heck, if we can do it in the Palestinian Territories, then we can do it anywhere!&lt;/p&gt;
&lt;p&gt;The video below is a short presentation about this project. Be sure to check out our website &lt;a href="http://www.newsti.ps/" target="_blank"&gt;&lt;a href="http://www.newsti.ps" target="_blank"&gt;www.newsti.ps&lt;/a&gt;&lt;/a&gt; for real-time updates during the upcoming humanitarian flotilla to break the siege on the Gaza Strip.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=NFKppc5G3Nw:MuNjm3sojZU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=NFKppc5G3Nw:MuNjm3sojZU:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/6319873998</link><guid>http://blog.swiftly.org/post/6319873998</guid><pubDate>Wed, 08 Jun 2011 10:18:34 -0400</pubDate><category>journalism</category><category>news</category><category>blog</category><category>knight</category><category>fellowship</category><category>indymedia</category><category>citizen</category></item><item><title>Video of my presentation earlier today at Personal Democracy...</title><description>&lt;iframe width="400" height="242" src="http://cdn.livestream.com/embed/pdf2011?layout=4&amp;clip=pla_2e8cca2c-0d4f-46dc-b3c8-cb653f4f5ae2&amp;autoplay=false" style="border:0;outline:0" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Video of my presentation earlier today at Personal Democracy Forum&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=2iqhc5maAmc:L80gFfCeJgk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=2iqhc5maAmc:L80gFfCeJgk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/6290902727</link><guid>http://blog.swiftly.org/post/6290902727</guid><pubDate>Tue, 07 Jun 2011 14:49:00 -0400</pubDate><category>pdf11</category></item><item><title>Members Only</title><description>&lt;p&gt;&lt;img src="http://farm4.static.flickr.com/3362/5786272826_72a9b8eda2.jpg"/&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm6.static.flickr.com/5225/5786272210_40842da2ec.jpg"/&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=6SeF-8qQXcM:s2acfG-3J4Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=6SeF-8qQXcM:s2acfG-3J4Q:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/6071002860</link><guid>http://blog.swiftly.org/post/6071002860</guid><pubDate>Wed, 01 Jun 2011 09:15:47 -0400</pubDate><category>tshirt</category><category>teamswift</category></item><item><title>Introducing Push Plugins</title><description>&lt;p&gt;Anyone pulling from the nightly repo may have noticed a cool new feature for the Swift Core that Ahmed wrote last month, our Push Plugin architecture.  This, as well as a number of other features will be released with the next release of Sweeper and the Swift PHP Core.&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img height="240" width="160" src="http://farm3.static.flickr.com/2372/2053167842_21a74235d7_m.jpg"/&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;How Push Plugins Work&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Push Plugins allow SwiftRiver applications to acquire content via push (versus pull) commands.  For instance, if a user needs an SMS gateway to submit to a Swift app, you no longer need to poll the server for that content, instead, the gateway can tell your app when there’s content by &lt;/span&gt;&lt;span&gt;pushing&lt;/span&gt;&lt;span&gt; to the application.  &lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;This plugin architecture currently supports receiving data through the standard HTTP methods GET and POST.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;In addition, this architecture can be extended through &lt;/span&gt;&lt;span&gt;Push Plugins&lt;/span&gt;&lt;span&gt; to support the injection of any kind of data into the system. For example, the uploading of content from files, or the use of bookmarklets such as the &lt;a href="http://plugins.swiftly.org/?p=89" target="_blank"&gt;Quiver extension&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;
&lt;h3&gt;&lt;span&gt;How To develop Push Plugins&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Locate the &lt;/span&gt;&lt;em&gt;Modules/SiSPS/PushParsers&lt;/em&gt;&lt;span&gt; folder, this is where you’ll find push parsers. To develop a push parser you will need to do the following:&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;span&gt;Create a file named &lt;/span&gt;&lt;em&gt;&lt;parsername&gt;PushParser.php&lt;/em&gt;&lt;span&gt; (the class name needs to be the same as the file name).&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Needs to be in the namespace &lt;/span&gt;&lt;em&gt;Swiftriver\Core\Modules\SiSPS\PushParsers&lt;/em&gt;&lt;span&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Implement the following methods:&lt;/span&gt; &lt;/li&gt;
&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;PushAndParser($raw_content = null, $post_content = null, $get_content = null)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;GetDescription() &lt;/span&gt;&lt;span&gt;- This is what gets displayed in the Sweeper UI that describes how the parser works&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ReturnType() - Returns the type that describes what the push parser is all about&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;The second and third methods are implemented for display purposes so that your parser can be displayed correctly in Swift applications.&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;The first method is where you need to write code to convert the content being received by your parser into the Swift object model, this function should also return the content back to the rest of the SwiftRiver Core once its finished.&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;br/&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Depending on the type of resource your parser is listening out for, it will receive the content in one of the three variables &lt;/span&gt;&lt;span&gt;$raw_content&lt;/span&gt;&lt;span&gt;, &lt;/span&gt;&lt;span&gt;$post_content&lt;/span&gt;&lt;span&gt; and &lt;/span&gt;&lt;span&gt;$get_content&lt;/span&gt;&lt;span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Jz7pWuYfKTo:nWAZlRUcfns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Jz7pWuYfKTo:nWAZlRUcfns:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/5828273945</link><guid>http://blog.swiftly.org/post/5828273945</guid><pubDate>Wed, 25 May 2011 04:24:00 -0400</pubDate><category>plugins</category><category>push</category><category>swiftapps</category><category>swiftriver</category><category>php</category><category>httpget</category></item><item><title>Jon’s talk from TED Global 2010 about the evolution of the...</title><description>&lt;iframe src="http://player.vimeo.com/video/23887420" width="400" height="220" frameborder="0"&gt;&lt;/iframe&gt;&lt;br/&gt;&lt;br/&gt;&lt;p&gt;Jon’s talk from TED Global 2010 about the evolution of the SwiftRiver platform and learning from mistakes in crowd-sourcing.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Hk4Jqr1szPc:vCHDy4kbEIo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Hk4Jqr1szPc:vCHDy4kbEIo:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/5789132638</link><guid>http://blog.swiftly.org/post/5789132638</guid><pubDate>Mon, 23 May 2011 22:39:45 -0400</pubDate><category>ted</category><category>TED</category><category>jon gosier</category><category>crisis</category><category>disaster</category><category>haiti</category></item><item><title>Resources for Developers</title><description>&lt;p&gt;If you’re a developer looking to build on our open-source stack or simply curious about our work, check out the following links.  You can follow our core team on twitter &lt;a href="http://twitter.com/swiftriver" target="_blank"&gt;@swiftriver&lt;/a&gt; and code commits to our project &lt;a href="http://twitter.com/swiftdev" target="_blank"&gt;@swiftdev&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;Overview of platform - &lt;a href="https://docs.google.com/document/d/1geoJCwS6Z3uOX2XqqdbxP4gMqEcN5W7ES6MHSIZhEUE/edit?hl=en&amp;authkey=CIvby-8C" target="_blank"&gt;&lt;a href="https://docs.google.com/document/d/1geoJCwS6Z3uOX2XqqdbxP4gMqEcN5W7ES6MHSIZhEUE/edit?hl=en&amp;authkey=CIvby-8C" target="_blank"&gt;https://docs.google.com/document/d/1geoJCwS6Z3uOX2XqqdbxP4gMqEcN5W7ES6MHSIZhEUE/edit?hl=en&amp;authkey=CIvby-8C&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dataflow in Swift - &lt;a href="http://www.flickr.com/photos/ww4f/sets/72157625922117348/" target="_blank"&gt;&lt;a href="http://www.flickr.com/photos/ww4f/sets/72157625922117348/" target="_blank"&gt;http://www.flickr.com/photos/ww4f/sets/72157625922117348/&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dataflow Video - &lt;a href="http://vimeo.com/19271268" target="_blank"&gt;&lt;a href="http://vimeo.com/19271268" target="_blank"&gt;http://vimeo.com/19271268&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Sweeper User Guide - &lt;a href="https://docs.google.com/document/pub?id=10VPGHnyvBiyr7i2cwqIpDehxOvIDlUgMid3lUBlgCwk" target="_blank"&gt;&lt;a href="https://docs.google.com/document/pub?id=10VPGHnyvBiyr7i2cwqIpDehxOvIDlUgMid3lUBlgCwk" target="_blank"&gt;https://docs.google.com/document/pub?id=10VPGHnyvBiyr7i2cwqIpDehxOvIDlUgMid3lUBlgCwk&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Screenshots of Sweeper - &lt;a href="http://www.flickr.com/photos/ww4f/sets/72157624792893922" target="_blank"&gt;&lt;a href="http://www.flickr.com/photos/ww4f/sets/72157624792893922" target="_blank"&gt;http://www.flickr.com/photos/ww4f/sets/72157624792893922&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Info on writing plugins - &lt;a href="http://wiki.ushahidi.com/doku.php?id=intro" target="_blank"&gt;&lt;a href="http://wiki.ushahidi.com/doku.php?id=intro" target="_blank"&gt;http://wiki.ushahidi.com/doku.php?id=intro&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Monthly Newsletter - &lt;a href="http://eepurl.com/de3jc" target="_blank"&gt;&lt;a href="http://eepurl.com/de3jc" target="_blank"&gt;http://eepurl.com/de3jc&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;&lt;strong&gt;Our Repos on GitHub&lt;/strong&gt;&lt;br/&gt;&lt;a href="http://github.com/ushahidi/swiftriver" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/swiftriver" target="_blank"&gt;http://github.com/ushahidi/swiftriver&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://github.com/ushahidi/sweeper" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/sweeper" target="_blank"&gt;http://github.com/ushahidi/sweeper&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://github.com/ushahidi/reverberation" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/reverberations" target="_blank"&gt;http://github.com/ushahidi/reverberations&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://github.com/ushahidi/silcc" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/silcc" target="_blank"&gt;http://github.com/ushahidi/silcc&lt;/a&gt;&lt;/a&gt;&lt;br/&gt;&lt;a href="http://github.com/ushahidi/geodict" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/geodict" target="_blank"&gt;http://github.com/ushahidi/geodict&lt;/a&gt;&lt;/a&gt; &lt;br/&gt;&lt;a href="ttp://github.com/ushahidi/swiftmeme" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/swiftmeme" target="_blank"&gt;http://github.com/ushahidi/swiftmeme&lt;/a&gt;&lt;/a&gt; &lt;br/&gt;&lt;a href="http://github.com/ushahidi/sicds" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/sicds" target="_blank"&gt;http://github.com/ushahidi/sicds&lt;/a&gt;&lt;/a&gt; &lt;br/&gt;&lt;a href="http://github.com/ushahidi/riverid" target="_blank"&gt;&lt;a href="http://github.com/ushahidi/riverid" target="_blank"&gt;http://github.com/ushahidi/riverid&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=g8vhXJywFuY:js1f6FgoHwc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=g8vhXJywFuY:js1f6FgoHwc:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/5788873594</link><guid>http://blog.swiftly.org/post/5788873594</guid><pubDate>Mon, 23 May 2011 22:31:00 -0400</pubDate><category>developers</category><category>resources</category><category>github</category></item><item><title>Sweeper V0.3.1 Released - Twitter Streaming and Proxy Support</title><description>&lt;p&gt;&lt;strong&gt;Download Sweeper V0.3.1 With Support for Twitter Streaming API &lt;a title="download Sweeper V0.3.1" href="https://github.com/downloads/ushahidi/Sweeper/Sweeper_V0.3.1.zip" target="_blank"&gt;here&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Any of you keen Swiftriver lovers out there will remember the recent launch of our 0.3 version of the Sweeper app. The release went well and we got loads of feedback.&lt;/p&gt;
&lt;p&gt;We were able to identify a couple of bugs in the release that were causing headaches for you guys and girls out there trying to set Sweeper up. So we fixed them …&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fixed the mysql table engine bug&lt;/strong&gt;, thanks to everyone on the Swiftriver google group for finding and helping to fix this!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fixed the link back to original content in the content source popup&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;So why didn’t we give you these fixes a week ago … well we wanted to hold off as we were sooooo close to finished two other pieces of work that it didn’t seem right to give you the bug fixes without a little ‘we’re sorry’ present, so here it comes:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Swiftriver and Sweeper now support collecting content from the Twitter Streaming API.&lt;/strong&gt; This is a massive win for our software and we know that there will be loads of you who want to check it out. Its still early doors on this at the moment and there are a few things that we haven’t quite got right – for example we cant tag and translate all the content coming from a stream yet – but we didn’t feel that this was reason enough to hold you dudes back. So if you LOVE data and want to see a whole lot of it, download the latest V0.3.1 release of Sweeper and get cracking.  &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Sweeper can be now be deployed behind a proxy. &lt;/strong&gt;This is great news for any of you wanting to use Sweeper on your corporate networks and we know you have had issues with this in the past, well they are now truly in the past!!! &lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;We hope that you love this latest mini release as much as we do and as always, we love your comments, questions and criticisms (yes we really do!)&lt;/p&gt;
&lt;p&gt;Just a small note for those of you who are already running a version of Sweeper but who want to take advantage of the new features in this release … while Sweeper does not yet officially support upgrades, it is possible. Basically all you have to do is dump the new code over the existing install then run through the installer (http://[where-you-installed-sweeper]/installer) and when you get the ‘create admin user section’, just skip it (just click on ‘6:Proxy Server Setup’ at the top of the page) without entering a new admin password. Hope this helps, and we are working on an official upgrade path to make adoption of the latest versions of Sweeper easier in the future!&lt;/p&gt;
&lt;p&gt;So that’s all for now folks, till next time,&lt;/p&gt;
&lt;p&gt;Matthew Griffiths,&lt;/p&gt;
&lt;p&gt;Director of Platform&lt;/p&gt;
&lt;p&gt;SwiftRiver&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;&lt;strong&gt;Download Sweeper V0.3.1 With Support for Twitter Streaming API &lt;a title="download Sweeper V0.3.1" href="https://github.com/downloads/ushahidi/Sweeper/Sweeper_V0.3.1.zip" target="_blank"&gt;here&lt;/a&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Jrh4W3zYYU4:W0nyPVVhqME:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Jrh4W3zYYU4:W0nyPVVhqME:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/4629850348</link><guid>http://blog.swiftly.org/post/4629850348</guid><pubDate>Fri, 15 Apr 2011 05:49:00 -0400</pubDate><category>sweeper</category><category>release</category><category>twitter</category><category>streaming</category></item><item><title>The Sweeper User Guide</title><description>&lt;p&gt;Sweeper has been around for just over a year now and although the code is still changing quite rapidly. However, the core platform is now stable enough that we’re releasing this User’s Guide. It’s certainly long overdue.  Sweeper is the a free and opensource multimedia curation platform that we’ve been developing over the past few months.  It’s a quick and easy way to create a social media monitoring dashboard.  You can find the User Manual embedded below or at &lt;a href="http://swiftly.org/userguide" target="_blank"&gt;&lt;a href="http://swiftly.org/userguide" target="_blank"&gt;http://swiftly.org/userguide&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So what are some of the things one can perform with the Sweeper application?&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Combine many feeds into one: then curate, filter and translate&lt;/li&gt;
&lt;li&gt;Count and archive Twitter mentions&lt;/li&gt;
&lt;li&gt;Mashup content from Email, Twitter, Blogs, Flickr, News sites, RSS/ATOM etc.&lt;/li&gt;
&lt;li&gt;Automate the addition of context to data: Location, priority, influence, reputation, tags etc.&lt;/li&gt;
&lt;li&gt;Structure unstructured data&lt;/li&gt;
&lt;li&gt;Buffering against an excess of crowdsourced data&lt;/li&gt;
&lt;li&gt;Set-up pipes of conditional logic for automating data processes&lt;/li&gt;
&lt;li&gt;Collect and manage realtime data from SMS while completely offline&lt;/li&gt;
&lt;li&gt;Translate real-time content from social media on the fly&lt;/li&gt;
&lt;li&gt;Datamine real-time content aggregated by you or your team&lt;/li&gt;
&lt;li&gt;Keyword monitoring from Twitter, Posterous, Blogger, Google News and Wordpress&lt;/li&gt;
&lt;li&gt;Native integration with Ushahidi and Crowdmap&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Sweeper can be downloaded today from &lt;a href="http://swiftly.org" target="_blank"&gt;Swiftly.org&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a title="Sweeper User Guide v0.3" href="http://www.slideshare.net/Ushahidi/sweeper-user-guide-v03" target="_blank"&gt;Sweeper User Guide v0.3&lt;/a&gt;&lt;/strong&gt; 
&lt;object id="__sse7502081" width="477" height="510"&gt;
&lt;param name="movie" value="http://static.slidesharecdn.com/swf/doc_player.swf?doc=sweeperuserguidev0-3-110403145811-phpapp01&amp;stripped_title=sweeper-user-guide-v03&amp;userName=Ushahidi"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed name="__sse7502081" src="http://static.slidesharecdn.com/swf/doc_player.swf?doc=sweeperuserguidev0-3-110403145811-phpapp01&amp;stripped_title=sweeper-user-guide-v03&amp;userName=Ushahidi" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="477" height="510"&gt;&lt;/embed&gt;&lt;/object&gt;
View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;documents&lt;/a&gt; from &lt;a href="http://www.slideshare.net/Ushahidi" target="_blank"&gt;Ushahidi&lt;/a&gt;&lt;/p&gt;
&lt;script src="http://b.scorecardresearch.com/beacon.js?c1=7&amp;c2=7400849&amp;c3=1&amp;c4=&amp;c5=&amp;c6="&gt;&lt;/script&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=W2EYUk-Ngq0:8_ugHkBiaNg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=W2EYUk-Ngq0:8_ugHkBiaNg:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/4341021523</link><guid>http://blog.swiftly.org/post/4341021523</guid><pubDate>Mon, 04 Apr 2011 12:15:31 -0400</pubDate><category>realtime</category><category>twitter</category><category>socialmedia</category><category>pipes</category><category>opensource</category><category>alternative</category><category>curation</category></item><item><title>Subjectivity, Veracity and Truth</title><description>&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;SwiftRiver is constructed from the viewpoint that there are no absolute truths and that what is considered to be &lt;em&gt;factual&lt;/em&gt; by most is still highly subjective or biased depending upon context.&lt;/p&gt;
&lt;p&gt;Thus, we build tools which allow users to curate their own depiction of a perspective. In the same way that there are more than one newspaper, more than one political party in most countries, more than one religion, even more than one ‘official’ source for occurrences like earthquakes or climate change. We build tools that enable people to convey their confidence in datasets. This in no way implies that data is unbiased.&lt;/p&gt;
&lt;p&gt;Swift apps add many layers of context to data as meta-data for making processing data faster, which in turn give our own systems more &lt;em&gt;ammo&lt;/em&gt;with which to attempt to understand and auto-mate it’s processing.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What does veracity mean?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Veracity is simply the term we use to represent the baseline of &lt;em&gt;trust&lt;/em&gt; that our users have conveyed about content, sources and events.  This baseline allows us to do things like recommend related content that is likely be relevant to their view; or in the case of an organization, the collective view.&lt;/p&gt;
&lt;p&gt;A number of factors go into creating this profile: how content is organized, how it’s interacted with, how people have behaved in the past, how certain communities feel about it’s members and vice-versa, calculations for real-world phenomena like time and location of an event and so on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When it comes to verifying data, our tools serve two purposes.&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li class="level1"&gt;For a public-facing deployment of our apps (including Ushahidi), we offer tools that allow the user to make a case to the public about a particular view. For example, these are the people in the crowd whom they trust, and what those people had to say about an event.&lt;/li&gt;
&lt;li class="level1"&gt;For a non-public facing deployment, some of our apps (like Sweeper) can be used to structure data, conditionally filter and view it. This is useful for setting up automated workflows like ‘pass only approved content, taged with location and these tags, and pass that data over to Ushahdi or some other application’.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;In both cases the users, the people behind the deployment, are creating their unique baseline for trust, and therefore are putting forth what they consider to be accurate, or favored, content.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Isn’t this bias?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Yes. Any system operated by a human, and I would go further to say machine created by a human, is subject to some sort of bias.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What does it mean to &lt;em&gt;verify&lt;/em&gt; data&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;In the context of most Ushahidi applications ‘verified’ means corroborated or confirmed by a human. This means on the receiving end, the person ‘verifying’ the data is essentially saying “I’m taking the onus to approve this report because something, or someone, has indicated that this is true.”&lt;/p&gt;
&lt;p&gt;Does that mean untrue information can be ‘verified’ either intentionally or accidentally? Yes. All of the terms are highly subjective and people have a number of preconceptions about what these things mean. They are mere abstractions that represent user behavior and intended use.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Verification Levels&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;It is a mistake to assume that because something is ‘verified’ or has a high veracity score, that it is a fact. What these indications are actually telling viewers and/or the deployer is that this is the baseline for accuracy set forth by an editing body (the deployer). Even verifying reports multiple times by independent participants will not account for human bias or fallibility.&lt;/p&gt;
&lt;p&gt;The numbers are there because they are an additional layer of context (readable by machines and humans) allowing the deployer(s) to curate information based on the trust profile they’ve set forth through their interactions.&lt;/p&gt;
&lt;p&gt;Likewise, viewing the same data geo-spatially simply implies that this is one community’s understanding of the collected data and what they perceive it to represent. It’s simply a faster way to view data to build up a baseline of ‘favor’ and then use the scores to filter out the content is less likely to fit that profile.&lt;/p&gt;
&lt;p&gt;- Jon Gosier, Director of Product&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=sw3FiD55jQw:Yg6z3Hb0dZk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=sw3FiD55jQw:Yg6z3Hb0dZk:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/4066524948</link><guid>http://blog.swiftly.org/post/4066524948</guid><pubDate>Thu, 24 Mar 2011 13:55:00 -0400</pubDate><category>veracity</category><category>verification</category><category>subjectivity</category><category>truth</category><category>journa</category><category>journalism</category></item><item><title>Translating Realtime Social Media</title><description>&lt;p&gt;One of the problems a lot of crowdsourcing projects have is that they end up pulling in massive amounts of data from the web, Twitter and other channels from around the world.  This means content arrives in many different languages, often languages that the deployer doesn’t speak.&lt;/p&gt;
&lt;p&gt;Currently in &lt;a href="http://swiftly.org/products-2/apps/sweeper/" target="_blank"&gt;Sweeper&lt;/a&gt; and soon in Ushahidi, users can translate real-time content from one language into another, on the fly, as they receive it.  This is done using our Google Translate plugin which currently supports 50+ languages.&lt;/p&gt;
&lt;p&gt;For the Sweeper deployment we’re using to monitor the situation in Japan internally, we’re using this feature to monitor events, since we can’t manually translate every single message coming through.  We’ve found it a significant timesaver.  You can also see below that we’re showing the user what language the message was translated from, or if it’s been translated at all…&lt;/p&gt;
&lt;p&gt;Before:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.ushahidi.com/wp-content/uploads/2011/03/Screen-shot-2011-03-24-at-12.54.29-AM.png" target="_blank"&gt;&lt;img src="http://blog.ushahidi.com/wp-content/uploads/2011/03/Screen-shot-2011-03-24-at-12.54.29-AM-500x75.png" title="Screen shot 2011-03-24 at 12.54.29 AM" width="500" height="75" class="alignnone size-medium wp-image-3807"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;After:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blog.ushahidi.com/wp-content/uploads/2011/03/Screen-shot-2011-03-24-at-12.52.48-AM.png" target="_blank"&gt;&lt;img src="http://blog.ushahidi.com/wp-content/uploads/2011/03/Screen-shot-2011-03-24-at-12.52.48-AM-500x184.png" title="Screen shot 2011-03-24 at 12.52.48 AM" width="500" height="184" class="alignnone size-medium wp-image-3806"/&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;It’s important to understand, that this is machine translation, so it’s far from perfect. But if you’re monitoring feeds from multiple countries across Twitter, RSS, Email or SMS it’s sometimes useful enough to get a quick sense of what’s being said, where to potentially look for more info, or perhaps where to direct human translators.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=sYZRsYp-Opk:MXIS40JQvII:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=sYZRsYp-Opk:MXIS40JQvII:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/4058759023</link><guid>http://blog.swiftly.org/post/4058759023</guid><pubDate>Thu, 24 Mar 2011 01:32:53 -0400</pubDate><category>swift</category><category>sweeper</category><category>google</category><category>translate</category></item><item><title>Integrating with Swiftriver – Using systems we haven’t even though of</title><description>&lt;p class="MsoNormal"&gt;&lt;span&gt;Just the other day I was asked a couple of questions about integrating Swiftriver with data sources and third-party systems that the Swiftriver team haven’t thought of.&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;I though the answers may be helpful to others who are thinking of doing the same thing or just want to get a bit more insight into this side of the platform:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;Question 1:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Can Swiftriver be extended to manage streams of discreet data such as geographic coordinates coming from a source like SMS messages or remote sensing platforms&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span&gt;My Answer:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal"&gt;Most definitely! Our core platform has several points of easy extension and one of these is the plug-in system we call Parsers. Each parser knows how to communicate with one type of source and how to process data coming from that source. Examples of existing parsers are; the ‘Twitter Search Parser’, the ‘Frontline SMS Parser’ and the ‘Google News Parser’. The Parser plug-in architecture is very simple to programme for, meaning that new Parsers for any new source are simple to produce and then leverage. It would therefore, be a relatively simple task for a developer to create a Parser that ‘understood’ how to use discreet data such as geo-coordinates (or in fact any other type of data) and knew how you receive that data from a source such as an SMS Gateway. Once written, the Parser can literally be dropped into the correct folder of the software install and this new Channel (combination of source and data type) would instantly become available for use.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt; &lt;/span&gt;&lt;strong&gt;&lt;span&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span&gt;Question 2:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Would it be possible to link the Swift platform to a data platform like Excel, SPSS or JMP?&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;strong&gt;&lt;span&gt;My Answer:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p class="MsoNormal"&gt;Again, this is exactly the kind of use case that we had in mind when we sketched out the first architecture diagrams for Swiftriver. Our Core platform has several points of easy extension and one of these is the plug-in system we call Reactor Turbines. These Reactor Turbines react to system events and have the ability change, control or redirect the flow of content within Swiftriver. For example, we already have a ‘Ushahidi Reactor Turbine’ that is responsible for sending content items that have been collected and processed by Swiftriver (and by processed I mean that they have been passed to our Web Services for Auto NLP Tagging, Auto GEOLocation etc.) directly to the Ushahidi mapping platform. It would be a relatively simple task to write a Reactor Turbine that pushed content into any of the Statistical Analysis tools you mentioned.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;In addition, because the architecture of our platform is designed to be de-coupled, the Web Applications – such as Sweeper – communicate with our core platform via a web based API. The practical upshot of this is that any software system can be extended to talk to the same API and gain access to all the functionality currently shown in our Web Applications.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;So; it is very possible to link Swiftriver with any other data driven platform or in fact any other application of any kind. The type of operations the third party system would wish to enact would dictate the type of coupling chosen: If the third party system is only interested in being sent the processed data from Swiftriver then the Reactor Turbines architecture would suffice, if however greater interaction is required from the third party system then a direct connection to our API would be more suited.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;I hope that these answers provide a good insight into the ways you can integrate Swiftriver with other systems. &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;As always, if you want to ask any questions or just start an interesting chat about how Swiftriver can be used, why not join the community via our Google Groups Chat [&lt;a target="_blank" href="http://groups.google.com/group/Swiftriver"&gt;&lt;a href="http://groups.google.com/group/Swiftriver" target="_blank"&gt;http://groups.google.com/group/Swiftriver&lt;/a&gt;&lt;/a&gt;].&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Till next time, &lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Matt&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span&gt;Director of Platform, Swiftriver&lt;/span&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=eyR2PiEuEzo:Hci8Hiub4Ns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=eyR2PiEuEzo:Hci8Hiub4Ns:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/3999321945</link><guid>http://blog.swiftly.org/post/3999321945</guid><pubDate>Mon, 21 Mar 2011 03:36:00 -0400</pubDate></item><item><title>Positions Open at Swiftly.org</title><description>&lt;p&gt;Ushahidi is currently seeking to hire individuals in the following full-time and contract positions: Sr. Web Application Developer, Online Ethnographer/Behaviorist, Computational Linguistics Expert. As these positions are filled this post will be updated to reflect what’s still available.&lt;/p&gt;
&lt;p&gt;Contact: Jon Gosier, Director of SwiftRiver at jg[at]swiftly.org&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span mce_style="font-weight: bold;" mce_name="strong"&gt;Sr. Web Application Developer (Python/PHP)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Experience Requirements: At least 4 years professional experience in PHP/XHTML/MySQL/CSS building web applications. This position is minimum full-time for 12 months. Developers with a background in Design, experience with Ruby (Rails), Python (Django) and PHP Frameworks are definitely preferred but all candidates are welcome to apply.&lt;/p&gt;
&lt;p&gt;Location: Anywhere, Global&lt;/p&gt;
&lt;p&gt;Salary: $60k per year, U.S. dollars. 75% full-time commitment expected although candidates are welcome to maintain side-projects so long as they don’t affect primary deliverables and deadlines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span mce_style="font-weight: bold;" mce_name="strong"&gt;Online Ethnographer/Behaviorist&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Experience Requirements: PHD or PHD-Candidate level with a background in the qualitative study of network dynamics and ethnography of online communities. Position will require deep analysis of dynamics in online communities, and work alongside computer science teams to assist in the development of applications and algorithms based upon their research.&lt;/p&gt;
&lt;p&gt;This position is minimum full-time for 12 months.&lt;/p&gt;
&lt;p&gt;Location: Anywhere, Global&lt;/p&gt;
&lt;p&gt;Salary: $60k per year, U.S. dollars. 75% full-time commitment expected although candidates are welcome to maintain side-projects so long as they don’t affect primary deliverables and deadlines.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span mce_style="font-weight: bold;" mce_name="strong"&gt;Computational Linguistics Expert (Python)&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Experience Requirements: At least 5 years professional experience in the development of computational linguistic algorithms using Python. Applicant would supervise the development of open-source semantic technologies, with an emphasis on modularity and scalability. This position is contract.&lt;/p&gt;
&lt;p&gt;Location: Anywhere, Global&lt;/p&gt;
&lt;p&gt;Salary: Contract. Negotiable.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Gn4SgH23Lg4:q6Da18GWNvA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=Gn4SgH23Lg4:q6Da18GWNvA:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/3860693081</link><guid>http://blog.swiftly.org/post/3860693081</guid><pubDate>Mon, 14 Mar 2011 16:27:15 -0400</pubDate><category>swift</category><category>jobs</category><category>hiring</category></item><item><title>Sweeper v0.3.0 Released</title><description>&lt;p class="MsoNormal"&gt;&lt;strong&gt;Download Sweeper V0.3 Now - &lt;a title="download Sweeper V0.3" href="https://github.com/downloads/ushahidi/Sweeper/Sweeper_V0.3.zip" target="_blank"&gt;Click Here!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Hi all you Swiftriver and Sweeper followers out there.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The Swiftriver team is over the moon to announce the launch of our latest version of the Sweeper app.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Those of you who have been following our progress will know that this release comes hot off the heels of the V0.2 that we pushed to you all a couple of months ago.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;As always, the Swiftriver guys and girls have had their heads down crafting and coding some great new features that go a long way to making Sweeper bigger and better than ever before.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;So, what can you expect to see out of the V0.3 release?&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;strong&gt;The Sweeper Dashboard&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;Users of the new release will be greeted by a lovely shiny new dashboard  that makes use of our custom built analytics module and the great jQuery  graphing library jqplot [http://www.jqplot.com/] (thanks Chris for this  easy to use and powerful tool). You can expect to see a lot more data  visualisation in upcoming releases and we intend to utilise the power of  the new analytics module throughout the Swiftriver family. &lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;img src="http://media.tumblr.com/tumblr_lhdf6etdEA1qb4bzb.png"/&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpFirst"&gt;&lt;strong&gt;Tag Based Navigation &amp; Channel Based Navigation&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;Building our powerful tagging service, the latest version of Sweeper now  offers users the ability to refine their view of content based on tags  that are important to them. Simply click on any tag in the content list  and see the list repopulated with only content that contains that tag!&lt;br/&gt; Want to compare and cross check what people are saying on Twitter with  what they are posting to flickr? Well now you can with Sweeper V0.3. The  new channel based navigation filter makes it dead easy to view only  content collected by a specific channel while still continuing to  collect and process content from all over the web.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://media.tumblr.com/tumblr_lhdfrvyqJu1qb4bzb.png"/&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpMiddle"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Content Clustering&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;This is a great new tool that allows you to see how similar other content is to a new piece of content. Make sense? Well basically, every new piece of content that comes into Sweeper now has some scores attached to it, showing you how its set of tags match up to the larger set of tags in the system. To make this really relevant, we first show how similar this content is to all other content, then we show how similar it is to content you’ve already marked as ‘accurate’. We expect this feature to grow and grow and the Swiftriver team think this will be a key metric in the battle to cut through the noise and get down to only really interesting content.&lt;/p&gt;
&lt;p class="MsoListParagraphCxSpLast"&gt;&lt;img src="http://media.tumblr.com/tumblr_lhdfubpgjd1qb4bzb.png"/&gt;&lt;/p&gt;

&lt;p class="MsoNormal"&gt;&lt;strong&gt;Content Refresh Message&lt;/strong&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The new version of Sweeper keeps you updated with messages about how many new pieces of content have been collected!&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;img src="http://media.tumblr.com/tumblr_lhdk7npiLV1qb4bzb.png"/&gt;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;As always, we didn’t manage to cram everything into this release that we would have liked to – but no worries, it just makes the next release all the more juicier!&lt;/p&gt;
&lt;p class="MsoNormal"&gt;So before I go, I can give you a little taste of some of the things you can expect to see from the next release:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Revised Sweeper Panel&lt;/strong&gt; &lt;br/&gt;&lt;em&gt;We have been doing some work internally on improving the user workflow around voting on content, expect the next release to have some jazzy new buttons for you all to press!&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;strong&gt;Pluggable Content Ordering Module&lt;/strong&gt; &lt;br/&gt;&lt;em&gt;Building on some of the great statistical tools we have in Sweeper already, the next release will ship with a whole new plugin framework (in addition to our Parser and Turbine models) that will allow you to change the order in which content is delivered based on things like location, RiverID score, tag clustering etc. And because it’s pluggable, you can dream up your own wild and wonderful ways of sorting the quality from the noise!&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p class="MsoNormal"&gt;Well that really is it for now. Thanks for following our project and please get in touch if you have any issues, suggestions or would like to contribute.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Thanks as always to the Swiftriver team and our brothers and sisters over at Ushahidi for making it all possible!&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Matt&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Director of Platform, Swiftriver&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=rnwsnmMXRyA:NoQ3OzqO7jM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=rnwsnmMXRyA:NoQ3OzqO7jM:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/3580160431</link><guid>http://blog.swiftly.org/post/3580160431</guid><pubDate>Tue, 01 Mar 2011 04:36:00 -0500</pubDate><category>Sweeper</category><category>Swift</category><category>product</category><category>platform</category></item><item><title>Developing Plugins for SwiftRiver Applications</title><description>&lt;p&gt;&lt;a href="http://twitter.com/ahmedmaawy" target="_blank"&gt;Ahmed Maawy&lt;/a&gt;, the newest hire to the SwiftRiver project, recently compiled this great ‘how-to’ guide on writing plugins for SwiftRiver applications like Sweeper and SwiftMeme.  These plugins can mostly be found at &lt;a href="http://plugins.swiftly.org" target="_blank"&gt;&lt;a href="http://plugins.swiftly.org" target="_blank"&gt;http://plugins.swiftly.org&lt;/a&gt;&lt;/a&gt; while the wishlist for things we’d like to see built can be found &lt;a href="http://wiki.ushahidi.com/doku.php?id=swift_wishlist" target="_blank"&gt;here.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;For a great example of how Swift plugins work, check out the &lt;a href="https://github.com/ushahidi/Report-Push" target="_blank"&gt;Ushahidi Report Push&lt;/a&gt; plugin, which allows content verified in Sweeper to be passed along to Ushahidi.  Coupled with the Yahoo Placemaker plugin, this is really powerful as it allows all content to pass from Sweeper to Ushahidi, auto-geolocated.&lt;/p&gt;
&lt;p&gt;You can view a fully formated version of this guide on &lt;a href="https://docs.google.com/document/d/1j70pxPF1N3N8Egs3amLCKr5aaGhrnQj6U5R8HuLWpjc/edit?hl=en" target="_blank"&gt;Google Docs&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;&lt;p&gt;&lt;span&gt;Before we begin it is worth noting that all SwiftRiver applications have 3 major components:&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;SwiftRiver Core&lt;/span&gt;&lt;span&gt; - the engine behind content retrieval, processing and storage.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Installer&lt;/span&gt;&lt;span&gt; - in charge of initial setup of the SwiftRiver platform.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Sweeper &lt;/span&gt;&lt;span&gt;- &lt;a href="https://github.com/ushahidi/Sweeper/archives/master" target="_blank"&gt;Sweeper&lt;/a&gt; is the application built on top of the Kohana PHP framework that acts as a web application that renders or provides a UI on behalf of the operations performed by the SwiftRiver core.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;There are 3 very important elements to understand for SwiftRiver applications when developing and extending the platform for customized functionality (These 3 elements can be considered as “plugins” for SwiftRiver).&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;Impulse Turbines &lt;/span&gt;&lt;span&gt;- Are elements that process and add value to content received from external sources.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Reactor Turbines &lt;/span&gt;&lt;span&gt;- Are event handlers, and are not necessarily meant to add value to content but to react to specific events within SwiftRiver.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Sources&lt;/span&gt;&lt;span&gt; - Are parsers for different types of content. They are responsible for retrieving content from the Internet or other relevant sources, and translating this content to SwiftRiver content items, so that content from different sources can all have a uniform format within SwiftRiver.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;span&gt;Its is important to note that the SwiftRiver &lt;/span&gt;&lt;span&gt;/Modules&lt;/span&gt;&lt;span&gt; folder contains a number of these event handlers (Reactor turbines and Impulse turbines). However, &lt;/span&gt;&lt;span&gt;Sources &lt;/span&gt;&lt;span&gt;(Also known as &lt;/span&gt;&lt;span&gt;Parsers&lt;/span&gt;&lt;span&gt;) are developed within the &lt;/span&gt;&lt;span&gt;/Modules/SiSPS/Parsers&lt;/span&gt;&lt;span&gt; folder.&lt;/span&gt;&lt;br/&gt;&lt;span&gt; &lt;/span&gt;&lt;br/&gt;&lt;span&gt;This is a step by step approach regarding how content is received and processed within the core:&lt;/span&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;Parsers&lt;/span&gt;&lt;span&gt; take the content from the various external sources, and convert it to the Swift object model.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Impulse Turbines&lt;/span&gt;&lt;span&gt; may act on the SwiftRiver content items and add value to these content items.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Reactor Turbines&lt;/span&gt;&lt;span&gt; may be used to work on the end result of the content either before they are processed by Impulse Turbines, or during their processing cycle, or anytime within the lifetime of the content after specific user actions (such as mark content as accurate).&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;span&gt;Parsers / Sources&lt;/span&gt;&lt;/strong&gt;&lt;span&gt;&lt;br/&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;Parsers are located within the &lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;/Modules/SiSPS/Parsers&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt; folder and follow the following important rules:&lt;/span&gt;&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;span&gt;Have to have a &lt;Parser_Name&gt;Parser.php file name format&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The class name has to be the same as the file name&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The class name must implement the IParser class&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;It must be within the namespace SwiftRiver\Core\SiSPS\Parsers&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Must contain the following functions:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;GetAndParse($channel): returns an array of Content Items&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ListSubTypes(): Returns the sub types of the Parser&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ReturnType(): Returns the type of the parser (Which has to have the same name as the parser you specified in &lt;Parser_Name&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ReturnRequiredParameters(): Returns an array of the parameters required to initiate a single source entry for this parser.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;You may take a look at how content items for Twitter are generated to get an example on how parsers work. Content Items are also passed back together with Source data where available. You may also need to know how the object model for a Channel, Source, and Content are structured. These classes are located within the &lt;/span&gt;&lt;span&gt;/ObjectModel/&lt;/span&gt;&lt;span&gt; folder.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;Impulse Turbines&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Located in the &lt;/span&gt;&lt;span&gt;/Modules/&lt;/span&gt;&lt;span&gt; folder. Use the following important rules:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;span&gt;Have a &lt;/span&gt;&lt;span&gt;&lt;Module_Name&gt;PreProcessingStep.php&lt;/span&gt;&lt;span&gt; file name format.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The class name has to be the same as the file name.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The class must implement the &lt;/span&gt;&lt;span&gt;\Swiftriver\Core\PreProcessing\IPreProcessingStep&lt;/span&gt;&lt;span&gt; class.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Must be in the namespace &lt;/span&gt;&lt;span&gt;Swiftriver\PreProcessingSteps&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Contain the following functions:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;Process($contentItems, $configuration, $logger)&lt;/span&gt;&lt;span&gt;: Which does processing on the content items.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Name()&lt;/span&gt;&lt;span&gt;: Returns the impulse turbine name.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Description()&lt;/span&gt;&lt;span&gt;: Returns the description of this pre-processing step.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ReturnRequiredParameters()&lt;/span&gt;&lt;span&gt;: Returns an array of required parameters for the pre-processing step.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;You may refer to the file GoogleLanguageServicePreProcessingStep.php in &lt;/span&gt;&lt;span&gt;/Modules/GoogleLanguageServiceInterface/&lt;/span&gt;&lt;span&gt; folder for an example.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Reactor Turbines&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Are located in the &lt;/span&gt;&lt;span&gt;/Modules/&lt;/span&gt;&lt;span&gt; folder with the following important rules:&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;span&gt;Have a &lt;/span&gt;&lt;span&gt;&lt;Module_Name&gt;EventHandler.php&lt;/span&gt;&lt;span&gt; file name format.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The class name has to be the same as the file name.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The class must implement the &lt;/span&gt;&lt;span&gt;\Swiftriver\Core\EventDistribution\IEventHandler&lt;/span&gt;&lt;span&gt; class.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Must be in the namespace &lt;/span&gt;&lt;span&gt;Swiftriver\EventHandlers&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Contain the following functions:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;
&lt;ul&gt;&lt;li&gt;&lt;span&gt;HandleEvent($event, $configuration, $logger)&lt;/span&gt;&lt;span&gt;: Contains the event code.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Name()&lt;/span&gt;&lt;span&gt;: Returns the impulse event.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;Description()&lt;/span&gt;&lt;span&gt;: Returns the description of this event.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ReturnRequiredParameters()&lt;/span&gt;&lt;span&gt;: Returns an array of required parameters for the event.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;ReturnEventNamesToHandle()&lt;/span&gt;&lt;span&gt;: Returns an array of the event enumerations the turbine tends to handle.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;You may refer to the file UshahidiAPIEventHandler.php in &lt;/span&gt;&lt;span&gt;/Modules/UshahidiAPIInterface/&lt;/span&gt;&lt;span&gt; folder for an example.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span&gt;Important notes to consider during the EventDistribution phase&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;span&gt;The ReturnEventNamesToHandle() function points to an enumeration from the &lt;/span&gt;&lt;span&gt;/EventDistribution/EventEnumeration.php&lt;/span&gt;&lt;span&gt; file. This is where you can design your own custom enumeration.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;It is most appropriate to place event handlers within the application’s &lt;/span&gt;&lt;span&gt;workflow&lt;/span&gt;&lt;span&gt;. Application workflows are placed within the &lt;/span&gt;&lt;span&gt;/Workflows/&lt;/span&gt;&lt;span&gt; folder. For example, all workflows related to channel activities are placed within the &lt;/span&gt;&lt;span&gt;/Workflows/ChannelServices/&lt;/span&gt;&lt;span&gt; folder.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;The example below demonstrates how you would invoke an event within a specific place within the workflow:&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;span&gt;$event = new \Swiftriver\Core\EventDistribution\GenericEvent(&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;\Swiftriver\Core\EventDistribution\EventEnumeration::&lt;span&gt; &lt;/span&gt;$ContentPostProcessing,&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;$processedContent);&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;$eventDistributor = new \Swiftriver\Core\EventDistribution\EventDistributor();&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;$eventDistributor-&gt;RaiseAndDistributeEvent($event);&lt;/span&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span&gt;Please feel free to contact the SwiftRiver team for any further assistance and help. You can contact us by emailing &lt;/span&gt;&lt;a href="mailto:support@swiftly.org" target="_blank"&gt;&lt;span&gt;support@swiftly.org&lt;/span&gt;&lt;/a&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=nuCVed255EI:gLmVXZbxRQ0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=nuCVed255EI:gLmVXZbxRQ0:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/3011028090</link><guid>http://blog.swiftly.org/post/3011028090</guid><pubDate>Sun, 30 Jan 2011 07:30:00 -0500</pubDate><category>howto</category><category>guide</category><category>plugins</category><category>swiftriver</category><category>sweeper</category><category>ushahidi</category><category>gis</category><category>geo</category><category>mapping</category><category>crisis</category></item><item><title>U St. Brainstorming Session</title><description>&lt;p&gt;&lt;a href="http://irevolution.wordpress.com/" target="_blank"&gt;Patrick Meier&lt;/a&gt; and some friends and users of Swift stopped by Affinity Labs in Washington a few days ago with some great suggestions and feature requests for the next release of our Sweeper application.  Our work was largely centric around rethinking user interaction options.  It was an exciting day and we’re really looking forward to incorporating these suggestions in our next release.&lt;/p&gt;
&lt;p&gt;Check out the slideshow for some shots of our brainstorming session and the image below for a sneak peak at the proposed redesign.&lt;/p&gt;
&lt;p&gt;
&lt;object width="550" height="413"&gt;
&lt;param name="flashvars" value="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fww4f%2Fsets%2F72157625931749300%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fww4f%2Fsets%2F72157625931749300%2F&amp;set_id=72157625931749300&amp;jump_to="&gt;&lt;param name="movie" value="http://www.flickr.com/apps/slideshow/show.swf?v=71649"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;embed type="application/x-shockwave-flash" src="http://www.flickr.com/apps/slideshow/show.swf?v=71649" allowfullscreen="true" flashvars="offsite=true&amp;lang=en-us&amp;page_show_url=%2Fphotos%2Fww4f%2Fsets%2F72157625931749300%2Fshow%2F&amp;page_show_back_url=%2Fphotos%2Fww4f%2Fsets%2F72157625931749300%2F&amp;set_id=72157625931749300&amp;jump_to=" width="550" height="413"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;&lt;img src="http://farm6.static.flickr.com/5096/5398160327_6fcc6ac654.jpg"/&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=H7WslysHRW0:cqtOujKBZbs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/swiftriver?a=H7WslysHRW0:cqtOujKBZbs:qj6IDK7rITs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/swiftriver?d=qj6IDK7rITs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</description><link>http://blog.swiftly.org/post/2996546715</link><guid>http://blog.swiftly.org/post/2996546715</guid><pubDate>Sat, 29 Jan 2011 13:26:01 -0500</pubDate><category>internews</category><category>brainstorm</category><category>swiftriver</category><category>crisismappers</category><category>crisis</category><category>whiteboard</category></item></channel></rss>

