<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>EchoTech &#187; open source</title>
	<atom:link href="http://www.echo-technology.co.uk/category/open-source/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.echo-technology.co.uk</link>
	<description>technology blogging for the moribund</description>
	<lastBuildDate>Tue, 06 Apr 2010 12:35:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Displaying Twitter messages using Growl</title>
		<link>http://www.echo-technology.co.uk/2009/12/22/displaying-twitter-messages-using-growl/</link>
		<comments>http://www.echo-technology.co.uk/2009/12/22/displaying-twitter-messages-using-growl/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 14:36:21 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[Apple Inc.]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Trowel]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=363</guid>
		<description><![CDATA[It&#8217;s been well-over a year since I hacked the the first few lines of code for Trowel, the open source, Perl solution to your Twitter and Growl needs.


How to: Growl and Twitter 
Twitter Growl Trowel v1.0
Twitter and Growl — real world solutions

I must confess there was no great plan I just needed a solution, but [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F12%2F22%2Fdisplaying-twitter-messages-using-growl%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F12%2F22%2Fdisplaying-twitter-messages-using-growl%2F" height="61" width="51" /></a></div><p>It&#8217;s been well-over a year since I hacked the the first few lines of code for Trowel, the open source, Perl solution to your Twitter and Growl needs.<br />
<span id="more-363"></span></p>
<ol>
<li><a href="http://www.echo-technology.co.uk/2008/11/11/how-to-growl-and-twitter/">How to: Growl and Twitter</a> </li>
<li><a href="http://www.echo-technology.co.uk/2009/01/26/twitter-growl-trowel-v10/">Twitter Growl Trowel v1.0</a></li>
<li><a href="http://www.echo-technology.co.uk/2009/11/23/twitter-growl-—-real-world-solutions/">Twitter and Growl — real world solutions</a></li>
</ol>
<p>I must confess there was no great plan I just needed a solution, but looking at the comments the above posts generated, so did many of you.</p>
<p>Now <a href="http://www.xs4all.nl/~ipenburg/">Roland van Ipenburg</a> has cleaned up the original code you can <a href="http://www.xs4all.nl/~ipenburg/trowel">download the latest version</a>. But for completeness I have reproduced it below.</p>
<p><code>#!/usr/bin/perl -w<br />
# -*- cperl; cperl-indent-level: 4 -*-<br />
use strict;<br />
use warnings;</p>
<p>## no critic qw(ProhibitLongLines)<br />
# $Id$<br />
# $Revision$<br />
# $HeadURL$<br />
# $Date$<br />
## use critic</p>
<p>use utf8;<br />
use 5.008000;</p>
<p>our $VERSION = '0.01';</p>
<p>use Date::Format;<br />
use Digest::MD5;<br />
use Encode;<br />
use File::HomeDir;<br />
use File::Slurp;<br />
use File::Spec;<br />
use Getopt::Long qw(:config no_ignore_case);<br />
use IO::File;<br />
use Imager;<br />
use LWP::Simple;<br />
use Log::Log4perl qw(:easy get_logger);<br />
use Mac::Growl;<br />
use Net::Twitter;<br />
use Pod::Usage;<br />
use Set::Scalar;</p>
<p>use Readonly ();<br />
## no critic qw(prohibitCallsToUnexportedSubs)<br />
Readonly::Scalar my $EMPTY   => q{};<br />
Readonly::Scalar my $NEWLINE => qq{\n};<br />
Readonly::Scalar my $COMMA   => q{,};<br />
Readonly::Scalar my $ESCAPE  => q{%};</p>
<p>Readonly::Scalar my $APPLICATION       => q{Growl+Twitter=trowel};<br />
Readonly::Scalar my $NOTIFICATION_NAME => q{New Tweet};</p>
<p>Readonly::Scalar my $DEFAULT_FORMAT   => q{%u: %t};<br />
Readonly::Scalar my $MAX_TWEETS       => 200;<br />
Readonly::Scalar my $MAX_TWEETS_INIT  => 5;<br />
Readonly::Scalar my $DISPLAY_INTERVAL => 4;<br />
Readonly::Scalar my $POLL_INTERVAL    => 37;<br />
Readonly::Scalar my $AVATAR_WIDTH     => 32;<br />
Readonly::Scalar my $AVATAR_HEIGHT    => $AVATAR_WIDTH;</p>
<p>Readonly::Scalar my $CACHE_DIR => File::Spec->catdir( File::HomeDir->my_home(),<br />
    qw{Library Caches GrowlHelperApp} );<br />
Readonly::Scalar my $TID_FILE       => q{tweet.id};<br />
Readonly::Scalar my $ENCODING       => q{utf8};<br />
Readonly::Scalar my $AVATAR_TYPE    => q{jpeg};<br />
Readonly::Scalar my $ERR_MODE_SLURP => q{quiet};</p>
<p>Readonly::Array my @CSV_OPTIONS        => qw(exclude include sticky);<br />
Readonly::Array my @NET_TWITTER_TRAITS => qw(InflateObjects Legacy);<br />
## use critic</p>
<p>Log::Log4perl->easy_init($INFO);<br />
my $log = get_logger();</p>
<p>my %options = (<br />
    format   => $DEFAULT_FORMAT,<br />
    poll     => $POLL_INTERVAL,<br />
    interval => $DISPLAY_INTERVAL,<br />
);<br />
foreach my $csv (@CSV_OPTIONS) {<br />
    $options{$csv} = [];<br />
}</p>
<p>Getopt::Long::GetOptions(<br />
    \%options,                  q{username|s=s},<br />
    q{password|p=s},            q{interval|i=i},<br />
    q{poll|l=i},                q{exclude|x=s@},<br />
    q{sticky|t=s@},             q{include|I=s@},<br />
    q{output|o},                qq{initials|n:$MAX_TWEETS_INIT},<br />
    q{format|f=s},              q{config|g=s},<br />
    qq{retrieve|r:$MAX_TWEETS}, q{help|h},<br />
    q{verbose+},                q{exclude_self|X},<br />
    qq{width:$AVATAR_WIDTH},    qq{height:$AVATAR_HEIGHT},<br />
    q{man},<br />
) or Pod::Usage::pod2usage(2);<br />
$options{help} &#038;&#038; Pod::Usage::pod2usage(1);<br />
$options{man} &#038;&#038; Pod::Usage::pod2usage( -verbose => 2 );</p>
<p># Gather comma seperated items or items from multiple options into a set:<br />
foreach my $csv (@CSV_OPTIONS) {<br />
    $options{$csv} =<br />
      Set::Scalar->new( split /$COMMA/xsm, join $COMMA, @{ $options{$csv} } );<br />
}<br />
$options{exclude_self} &#038;&#038; $options{exclude}->insert( $options{username} );</p>
<p>my @names = ($NOTIFICATION_NAME);<br />
$log->debug('Register notifications');<br />
## no critic qw(prohibitCallsToUnexportedSubs)<br />
Mac::Growl::RegisterNotifications( $APPLICATION, \@names, [ $names[0] ] );<br />
## use critic</p>
<p>my $twitter = Net::Twitter->new(<br />
    username => $options{username},<br />
    password => $options{password},<br />
    traits   => \@NET_TWITTER_TRAITS,<br />
);</p>
<p>my $last_id =<br />
## no critic qw(prohibitCallsToUnexportedSubs)<br />
  File::Slurp::read_file( File::Spec->catfile( $CACHE_DIR, $TID_FILE ),<br />
    err_mode => $ERR_MODE_SLURP );<br />
## use critic<br />
my $switch = 0;</p>
<p>$log->debug('Entering poll loop');<br />
while (1) {</p>
<p>    $log->debug('Getting timeline');<br />
    my $ar_timeline = $twitter->friends_timeline(<br />
        $last_id<br />
        ? { count => $MAX_TWEETS, since_id => $last_id }<br />
        : { count => $options{initials} }<br />
    );</p>
<p>    while ( my $tweet = shift @{$ar_timeline} ) {<br />
        $log->debug( 'Processing tweet ' . $tweet->id );<br />
        if ( !$switch ) {<br />
            $last_id = $tweet->id;<br />
## no critic qw(prohibitCallsToUnexportedSubs)<br />
            File::Slurp::write_file(<br />
                File::Spec->catfile( $CACHE_DIR, $TID_FILE ), $last_id );<br />
## use critic<br />
            $switch++;<br />
        }<br />
        next if ( skippable($tweet) );<br />
        my %tweet_data = get_data($tweet);<br />
        if ( $options{output} ) {<br />
## no critic qw(RequireCheckedSyscalls)<br />
            print $tweet_data{body}, $NEWLINE;<br />
## use critic<br />
        }<br />
        else {<br />
            growl( $tweet, \%tweet_data );<br />
        }<br />
    }<br />
    $switch = 0;<br />
    $log->debug( 'Wait ' . $options{poll} . ' seconds' );<br />
    sleep $options{poll};<br />
}</p>
<p>sub skippable {<br />
    my $tweet = shift;<br />
    return ( $options{exclude}->has( $tweet->user->screen_name )<br />
          || !$options{include}->is_null )<br />
      &#038;&#038; !$options{include}->has( $tweet->user->screen_name )<br />
      &#038;&#038; !$options{sticky}->has( $tweet->user->screen_name );<br />
}</p>
<p>sub get_data {<br />
    my $tweet      = shift;<br />
    my %tweet_data = (<br />
        n => $tweet->user->name,<br />
        u => $tweet->user->screen_name,<br />
        t => $tweet->text,<br />
        d => $tweet->created_at,<br />
        l => $tweet->user->location,<br />
    );<br />
    while ( my ( $key => $value ) = each %tweet_data ) {<br />
        ( defined $value )<br />
          &#038;&#038; ( $tweet_data{$key} = Encode::encode( $ENCODING, $value ) );<br />
    }<br />
    $tweet_data{$ESCAPE} = $ESCAPE;<br />
    my $map =<br />
      qq{(?<!$ESCAPE)$ESCAPE([} . join( $EMPTY, keys %tweet_data ) . q{])};<br />
    $log->debug( 'Using map ' . $map );<br />
    my $re = qr{$map}imsx;<br />
    $tweet_data{body} = $options{format};<br />
## no critic qw(ProhibitUselessRegexModifiers RequireLineBoundaryMatching)<br />
    $tweet_data{body} =~ s/$re/$tweet_data{$1}/gxs;<br />
## use critic<br />
    return %tweet_data;<br />
}</p>
<p>sub growl {<br />
    my ( $tweet, $hr_tweet_data ) = @_;<br />
    my $avatar = get_avatar( $tweet, $hr_tweet_data );<br />
## no critic qw(prohibitCallsToUnexportedSubs)<br />
    Mac::Growl::PostNotification(<br />
        $APPLICATION,<br />
        $names[0],<br />
## no critic qw(ProhibitAccessOfPrivateData)<br />
        $hr_tweet_data->{n},<br />
        $hr_tweet_data->{body},<br />
## use critic<br />
        $options{sticky}->has( $tweet->user->screen_name ) ? 1 : 0,<br />
        0,<br />
        $avatar<br />
    );<br />
## use critic<br />
    sleep $options{interval};<br />
    return;<br />
}</p>
<p>sub get_avatar {<br />
    my ( $tweet, $hr_tweet_data ) = @_;<br />
    my $avatar_url = $tweet->user->profile_image_url->as_string;<br />
    my $avatar_file =<br />
      File::Spec->catfile( ($CACHE_DIR), Digest::MD5::md5_hex($avatar_url) );<br />
    $log->debug($avatar_file);<br />
    my $fh = IO::File->new();<br />
    if ( !$fh->open(qq{< $avatar_file}) ) {<br />
        LWP::Simple::mirror( $avatar_url, $avatar_file );<br />
        my $img = Imager->new( file => $avatar_file );<br />
        my $thumb = $img->scale(<br />
            xpixels => $options{width},<br />
            ypixels => $options{height}<br />
        );<br />
        $thumb->write( file => $avatar_file, type => $AVATAR_TYPE );<br />
    }<br />
    $fh->close();<br />
    return $avatar_file;<br />
}</p>
<p>exit;</p>
<p>__END__</p>
<p>=encoding utf8</p>
<p>=head1 NAME</p>
<p>trowel - display Twitter messages with Growl.</p>
<p>=head1 VERSION</p>
<p>This is version 0.01. It's based on<br />
L<http://www.echo-technology.co.uk/2009/01/26/twitter-growl-trowel-v10/></p>
<p>=head1 SYNOPSIS</p>
<p>	trowel -u -p [options]</p>
<p>=head1 DESCRIPTION</p>
<p>Shows the tweets entering a users Twitter timeline as Growl notifications,<br />
including the avatar of the tweep. The format is the message in the<br />
notification is configurable and the avatars are scaled to fit in the standard<br />
Smoke Theme and cached locally.</p>
<p>=head1 DEPENDENCIES</p>
<p>L<Date::Format><br />
L<Digest::MD5><br />
L<Encode><br />
L<File::HomeDir><br />
L<File::Slurp><br />
L<File::Spec><br />
L<Getopt::Long><br />
L<IO::File><br />
L<Imager><br />
L<LWP::Simple><br />
L<Log::Log4perl><br />
L<Mac::Growl><br />
L<Net::Twitter><br />
L<Pod::Usage><br />
L<Set::Scalar></p>
<p>Issue the following command in a Terminal to install these modules:</p>
<p>	sudo /usr/bin/cpan -i Date::Format Digest::MD5 Encode File::Slurp \\<br />
	File::Spec Getopt::Long IO::File Imager LWP::Simple Log::Log4perl \\<br />
	Mac::Growl Net::Twitter Pod::Usage Set::Scalar Readonly \\<br />
	&#038;&#038; sudo /usr/bin/cpan -fi File::HomeDir</p>
<p>=head1 INCOMPATIBILITIES</p>
<p>=over 4</p>
<p>=item * File::HomeDir fails tests when it is being installed as root because<br />
the user root doesn't have some special Folders only normal users have. It can<br />
be installed as root by forcing the install with the -fi option.</p>
<p>=back</p>
<p>=head1 DIAGNOSTICS</p>
<p>This module uses Log::Log4perl for logging.</p>
<p>=head1 BUGS AND LIMITATIONS</p>
<p>=over 4</p>
<p>=item * This script aims to be compatible with the original version or<br />
trowel, but it it not bug-compatible</p>
<p>=item * A missing password option isn't interactively requested later</p>
<p>=item * The format processing is improved so C<%%> can be used to display a<br />
single C<%> and substitutes containing formats aren't clobbered.</p>
<p>=item * The location is not the location of the tweet, but of the account</p>
<p>=back</p>
<p>=head1 CONFIGURATION</p>
<p>To use this script you'll need an account at the Twitter micro-blogging<br />
service. The avatars used are scaled to 32x32 to fit as graphic in the default<br />
Smoke theme of Growl. The scaled avatars and the file containing the id of the<br />
most recent tweet displayed are stored in the cache folder of GrowlhelperApp<br />
in L<~/Library/Caches>.</p>
<p>=head1 USAGE</p>
<p>	trowel -u <twitter_username> -p <twitter_password> [-p -x -t -I -o -f -g<br />
	-h -v -vv -vvv]</p>
<p>=head1 REQUIRED ARGUMENTS</p>
<p>=over 4</p>
<p>=item * B<-u> B<--username> The username of the Twitter account to connect to</p>
<p>=item * B<-p> B<--password> The password of the Twitter account to connect to</p>
<p>=back</p>
<p>=head1 OPTIONS</p>
<p>=over 4</p>
<p>=item B<-u> B<--username> Twitter username</p>
<p>=item B<-p> B<--password> Twitter password</p>
<p>=item B<-i> interval between displaying tweets</p>
<p>=item B<-l> time between polls of Twitter feed</p>
<p>=item B<-x> list of users to exclude</p>
<p>=item B<-X> B<--exclude-self> exclude yourself</p>
<p>=item B<-t> list of users who's tweets are sticky, -x and -i will override<br />
this</p>
<p>=item B<-l> list of users to include</p>
<p>=item B<-o> output to STDOUT only, by-passing Growl, use this for piping to<br />
another application</p>
<p>=item B<-n> initial number of Tweets to request, default is 5</p>
<p>=item B<-f"<br />
<format>"> format of the Tweet<br />
%u - user<br />
%t - tweet<br />
%d - date time<br />
%l - location</p>
<p>=item B<-g> B<--config> a configuration file that sets command line<br />
parameters, this function is not implemented</p>
<p>=item B<-h> B<-help></p>
<p>=item B<-v> verbose mode</p>
<p>=item B<-vv> very verbose mode</p>
<p>=item B<-vvv> debug verbose mode</p>
<p>=item B<-man></p>
<p>=back</p>
<p>=head1 EXIT STATUS</p>
<p>The exit status is determined by L<Pod::Usage><br />
=over 4</p>
<p>=item * 1 </p>
<p>=item * 2</p>
<p>=back</p>
<p>=head1 EXAMPLES</p>
<p>trowel -u<username> -p
<password> -i5 -l180 -f"%t %d"<br />
-ttwitter,stephenfry,rjstelling<br />
-Iguykawasaki,twitter,stephenfry,TechCrunch,rjstelling</p>
<p>=head1 AUTHOR</p>
<p>=over 4</p>
<p>=item * Roland van Ipenburg  C<< <ipenburg@xs4all.nl> >></p>
<p>=item * Echotech L<http://www.echo-technology.co.uk/></p>
<p>=back</p>
<p>=head1 LICENSE AND COPYRIGHT</p>
<p>Copyright (C) 2009 by Roland van Ipenburg</p>
<p>This library is free software; you can redistribute it and/or modify<br />
it under the same terms as Perl itself, either Perl version 5.10.0 or,<br />
at your option, any later version of Perl 5 you may have available.</p>
<p>=head1 DISCLAIMER OF WARRANTY</p>
<p>BECAUSE THIS SOFTWARE IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY<br />
FOR THE SOFTWARE, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN<br />
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES<br />
PROVIDE THE SOFTWARE "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER<br />
EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED<br />
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE<br />
ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE SOFTWARE IS WITH<br />
YOU. SHOULD THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL<br />
NECESSARY SERVICING, REPAIR, OR CORRECTION.</p>
<p>IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING<br />
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR<br />
REDISTRIBUTE THE SOFTWARE AS PERMITTED BY THE ABOVE LICENSE, BE<br />
LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL,<br />
OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE<br />
THE SOFTWARE (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING<br />
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A<br />
FAILURE OF THE SOFTWARE TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF<br />
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF<br />
SUCH DAMAGES.</p>
<p>=cut</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2009/12/22/displaying-twitter-messages-using-growl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stackoverflow iPhone App — solving non-existant problems</title>
		<link>http://www.echo-technology.co.uk/2009/10/21/stackoverflow-iphone-app-solving-non-existant-problems/</link>
		<comments>http://www.echo-technology.co.uk/2009/10/21/stackoverflow-iphone-app-solving-non-existant-problems/#comments</comments>
		<pubDate>Wed, 21 Oct 2009 13:37:11 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[Stackoverflow]]></category>
		<category><![CDATA[Web Sites]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Appy Go Lucky]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=306</guid>
		<description><![CDATA[This weekend I decided to solve a problem that only existed in my head, namely that of no official (or unofficial) Stackoverflow iPhone App. 
There have been some questions raised about the possibilities of an API to allow such an App but, alas no noticeable development effort.

Stack Overflow is a programming Q &#038; A site [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F10%2F21%2Fstackoverflow-iphone-app-solving-non-existant-problems%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F10%2F21%2Fstackoverflow-iphone-app-solving-non-existant-problems%2F" height="61" width="51" /></a></div><p>This weekend I decided to solve a problem that only existed in my head, namely that of no official (or unofficial) <a href="http://stackoverflow.com">Stackoverflow</a> iPhone App. </p>
<p>There have been <a href="http://meta.stackoverflow.com/questions/3473/native-iphone-app">some questions</a> raised about the possibilities of an API to allow such an App but, alas no noticeable development effort.<br />
<span id="more-306"></span></p>
<blockquote><p>Stack Overflow is a programming Q &#038; A site that&#8217;s free. Free to ask questions, free to answer questions, free to read, free to index, built with plain old HTML, no fake rot13 text on the home page, no scammy google-cloaking tactics, no salespeople, no JavaScript windows dropping down in front of the answer asking for $12.95 to go away. You can register if you want to collect karma and win valuable flair that will appear next to your name, but otherwise, it&#8217;s just free. And fast. Very, very fast. — <a href="http://stackoverflow.com/">Stackoverflow</a></p></blockquote>
<p><img style="float: left; margin: 10px;" src="http://www.echo-technology.co.uk/images/stackapp-questions.jpg" alt="Stackoverflow iPhone App - Questions" /></p>
<h3>Alpha Launch</h3>
<p>This is simply a <em>heads-up</em> on what I achieved in about 6 hours of design, programming and testing. I&#8217;d like top get some feedback from the community before I launch head-long into a project that&#8217;ll make me no money.</p>
<p>My questions are:</p>
<ol>
<li>Is there a demand for this?</li>
<li>Is anyone willing to help with testing?</li>
</ol>
<h3>Testing</h3>
<p>If you want to help with the testing, send me your <a href="http://www.innerfence.com/howto/find-iphone-unique-device-identifier-udid">iPhone/iPod Touch UDID</a> using the form below.</p>
<div class="wpcf7" id="wpcf7-f1-p306-o1">
<form action="/category/open-source/feed/#wpcf7-f1-p306-o1" method="post" class="wpcf7-form">
<div style="display: none;"><input type="hidden" name="_wpcf7" value="1" /><input type="hidden" name="_wpcf7_version" value="1.9.5.1" /><input type="hidden" name="_wpcf7_unit_tag" value="wpcf7-f1-p306-o1" /></div>
<p>Your Name (required)<br />
    <span class="wpcf7-form-control-wrap your-name"><input type="text" name="your-name" value="" class="wpcf7-validates-as-required" size="40" /></span> </p>
<p>Your Email (required)<br />
    <span class="wpcf7-form-control-wrap your-email"><input type="text" name="your-email" value="" class="wpcf7-validates-as-email wpcf7-validates-as-required" size="40" /></span> </p>
<p>UDID (required)<br />
    <span class="wpcf7-form-control-wrap your-udid"><input type="text" name="your-udid" value="" class="wpcf7-validates-as-required" size="40" /></span> </p>
<p><input type="submit" value="Send UDID" /> <img class="ajax-loader" style="visibility: hidden;" alt="ajax loader" src="http://www.echo-technology.co.uk/wp-content/plugins/contact-form-7/images/ajax-loader.gif" /></form>
<div class="wpcf7-response-output"></div>
</div>

<p><img style="float: right; margin: 10px;" src="http://www.echo-technology.co.uk/images/stackapp-search.jpg" alt="Stackoverflow iPhone App - Search" /></p>
<h3>Open Source? App Store?</h3>
<p>I&#8217;ll be blogging more in the coming weeks about how (and why) I solved some of the problems with the lack of API. If the initial feedback is positive I&#8217;ll submit to the App Store early next week fore a (hopefully) early November availability &#8211; it&#8217;ll be a FREE App — ALWAYS and I&#8217;ll probably open source it at some point.</p>
<h3>Logo Help</h3>
<p>As you can see the logo is not great.</p>
<p><img src="http://www.echo-technology.co.uk/images/app-logo.png" alt="Stackoverflow iPhone App - Logo" /></p>
<p>If anyone has a better idea of can produce a better version of this logo please <a href="http://richardstelling.com">contact me</a>.</p>
<h3>Feedback</h3>
<p>Please post questions and feedback in the comments section — good or bad. Also feature requests will be seriously considered.</p>
<p>If you want to help fund this and other projects you could always buy my 59p ($0.99) <a href="http://www.appygolucky.co.uk/profanity/">Profanity App</a> (<a href="http://clkuk.tradedoubler.com/click?p=23708&#038;a=1677103&#038;url=http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=320383256&#038;mt=8&#038;s=143441&#038;partnerId=2003">iTunes link</a>).</p>
<h3>Video</h3>
<p>Here is a short video showing the use of the <strong>Stackoverflow iPhone App</strong>.</p>
<p><object width="640" height="505"><param name="movie" value="http://www.youtube.com/v/nJB77F7BCxQ&#038;hl=en&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/nJB77F7BCxQ&#038;hl=en&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="640" height="505"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2009/10/21/stackoverflow-iphone-app-solving-non-existant-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>UK Local News Aggregator &#8211; The Skinny</title>
		<link>http://www.echo-technology.co.uk/2009/03/06/uk-local-news-aggregator-the-skinny/</link>
		<comments>http://www.echo-technology.co.uk/2009/03/06/uk-local-news-aggregator-the-skinny/#comments</comments>
		<pubDate>Fri, 06 Mar 2009 10:50:54 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web Sites]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Matters News Network]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=235</guid>
		<description><![CDATA[Ever since we set up The Matters Network, we&#8217;ve been trying to find new ways to bring local content to out thousands of users. So at the end of 2008 we set up the Matters News Network, the aim was to distill the gigabytes of local data we produce each day and distribute it in the most convenient way (for us [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F03%2F06%2Fuk-local-news-aggregator-the-skinny%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F03%2F06%2Fuk-local-news-aggregator-the-skinny%2F" height="61" width="51" /></a></div><p>Ever since we set up <strong>The Matters Network</strong>, we&#8217;ve been trying to find new ways to bring local content to out thousands of users. So at the end of 2008 we set up the <a href="mailto:blog@echo-data.co.uk">Matters News Network</a>, the aim was to distill the gigabytes of local data we produce each day and distribute it in the most convenient way (for us and our users).</p>
<p><span id="more-235"></span>We decided on Twitter, the whole gang are big fans and we could see it was about to explode into the mainstream in the UK.</p>
<p>You can find your local Twitter feed at the <a href="mailto:blog@echo-data.co.uk">Matters News Network</a> blog post form last month.</p>
<h2>Matters News Network 2.0</h2>
<p>Since that post we have had a massive response with many accounts seeing a 10 fold increase in followers, some however are still empty; <a href="http://twitter.com/HerefordMatters">Herefordshire</a> and <a href="http://twitter.com/BerksMatters">Berkshire</a> to name and shame a few.</p>
<p>Never deterred we pressed on with a survey to find out peoples attitudes to social news sites, here are some of the responses:</p>
<p>&#8220;Digg unearths things that I wouldn&#8217;t find any other.&#8221;</p>
<p><em>&#8220;[...] too much emphasis on content democracy and &#8216;digging up&#8217; which is usually a publicity ploy&#8221;</em></p>
<p>&#8220;[...] easier to build networks, like tags for searchability of items&#8221;</p>
<p><em>&#8220;Fast moving, varied, able to focus on smaller subjects [...]&#8220;</em></p>
<p>&#8220;Simplicity, I use it more for my own references rather than giving an article support.&#8221;</p>
<p>By far the most important aspect to users was, ease of use. Well over 10% of respondent complained that sites such ad Digg required too much time and effort to participate in, but they liked the ability to find new and relevant information.</p>
<p>We wanted to keep the ease of use but simultaneously order, rate and rank the stories, this then allowed us to process more sources and increase the quality of our twitter feeds.</p>
<h2>Secret Sauce</h2>
<p>We believe in openness, and our ranking algorithm is no exception. We have plenty security measures in place plus all the stories come form trusted sources so we have less problems with spam.</p>
<h3>Activity</h3>
<p>More viewed articles will float to the top</p>
<p>If a story is re-tweeted is gets a boot</p>
<h3>Freshness</h3>
<p>Newer stories are given higher priority</p>
<h3>Keywords</h3>
<p>A dynamically changing list of keywords ensures we reflect current trends and public opinion</p>
<h2>3 point OH!</h2>
<p>We are looking to expand the range of blogs, local news papers, podcasts etc. IF you run a locally focused blog or online news source <a href="mailto:blog@echo-data.co.uk">contact us</a> or leave a comment</p>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2009/03/06/uk-local-news-aggregator-the-skinny/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Future Twitter Syntax</title>
		<link>http://www.echo-technology.co.uk/2009/02/09/future-twitter-syntax/</link>
		<comments>http://www.echo-technology.co.uk/2009/02/09/future-twitter-syntax/#comments</comments>
		<pubDate>Mon, 09 Feb 2009 12:59:00 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[Prior Art]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[Web Sites]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=198</guid>
		<description><![CDATA[As part of my Prior Art project I am publishing these Twitter syntax ideas I would like to see implemented.
We all know the standard Twitter syntax elements (#, @, d), these are documented below. Please leave comments and your own ideas (and correct my mistakes).

Current Syntax



Name
Syntax
Example


Hash Tag
#, #keyword
Used to denote keywords and aid search


At
@, @username
Used to indicate a [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F02%2F09%2Ffuture-twitter-syntax%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F02%2F09%2Ffuture-twitter-syntax%2F" height="61" width="51" /></a></div><p>As part of my <a href="http://www.echo-technology.co.uk/2009/02/15/the-prior-art-project-open-source-ideas/">Prior Art project</a> I am publishing these Twitter syntax ideas I would like to see implemented.</p>
<p>We all know the standard Twitter syntax elements (#, @, d), these are documented below. Please leave comments and your own ideas (and correct my mistakes).</p>
<p><span id="more-198"></span></p>
<h2>Current Syntax</h2>
<table border="1" width="100%">
<tbody>
<tr>
<td><strong>Name</strong></td>
<td><strong>Syntax</strong></td>
<td><strong>Example</strong></td>
</tr>
<tr>
<td>Hash Tag</td>
<td>#, #keyword</td>
<td>Used to denote keywords and aid search</td>
</tr>
<tr>
<td>At</td>
<td>@, @username</td>
<td>Used to indicate a Twitter user</td>
</tr>
<tr>
<td>Direct Message</td>
<td>d, d username</td>
<td>Used send a direct message to selected user</td>
</tr>
</tbody>
</table>
<p><span style="font-size: 10px;">(please leave undocumented syntax in the comments)</span><br />
 </p>
<h2>Future Syntax</h2>
<table border="1" width="100%">
<tbody>
<tr>
<td><strong>Name</strong></td>
<td><strong>Syntax</strong></td>
<td><strong>Example</strong></td>
</tr>
<tr>
<td> Group</td>
<td> +, +work or +school</td>
<td>Used to send the same tweet to multiple recipients, groups are user specified.The +group_name is never tweeted, instead multiple @username_nth messages are created.    </p>
<p>Groups should be limited to 20-50 members.</td>
</tr>
<tr>
<td> Private</td>
<td> $, $ [message]</td>
<td>Messages prefixed with $ are private and only followers can read and the tweet will not appear in the public time line or search.</td>
</tr>
<tr>
<td>Compressed / Encrypted</td>
<td> ?, ?[compressed message]</td>
<td>Messages that start with ? are compressed and will require spacial software to uncompress.   </p>
<p>This also might indicate an encrypted message. This would most often be combined with $.</td>
</tr>
</tbody>
</table>
<p><span style="font-size: 10px;">(please leave undocumented syntax in the comments)</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2009/02/09/future-twitter-syntax/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter + Growl = Trowel v1.0</title>
		<link>http://www.echo-technology.co.uk/2009/01/26/twitter-growl-trowel-v10/</link>
		<comments>http://www.echo-technology.co.uk/2009/01/26/twitter-growl-trowel-v10/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 17:58:29 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[Featured]]></category>
		<category><![CDATA[Mac OS X]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Growl]]></category>
		<category><![CDATA[launchd]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Twitter]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=79</guid>
		<description><![CDATA[You may have already read my how-to on integrating Twitter and Growl but this is the upgrade! I will go through the code for those interested, please help me improve the code by leaving a comment, good or bad.

I have some quite ambitious plans for this project, but this is not the time to bore you with promises, so vaporware it will remain &#8211; for [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F01%2F26%2Ftwitter-growl-trowel-v10%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2009%2F01%2F26%2Ftwitter-growl-trowel-v10%2F" height="61" width="51" /></a></div><p>You may have already read my <a href="http://www.echo-technology.co.uk/2008/11/11/how-to-growl-and-twitter/" target="_blank">how-to on integrating Twitter and Growl</a> but this is the upgrade! I will go through the code for those interested, please help me improve the code by leaving a comment, good or bad.</p>
<p><span id="more-79"></span></p>
<p>I have some quite ambitious plans for this project, but this is not the time to bore you with promises, so vaporware it will remain &#8211; for now.</p>
<p>I&#8217;d like to start by thanking everyone who has commented on this project so far &#8211; it&#8217;s been such a big help, keep them coming.</p>
<p> </p>
<h2>What&#8217;s new?</h2>
<p>If you can&#8217;t see a feature you requested its not because I am ignoring it, it&#8217;s simply I haven&#8217;t got round to it or it been superseded. As alway comments will always be read so you can always bug me there.</p>
<p>1. Profile images now supported</p>
<p>2. Run in the background and optionally use launchd</p>
<p>3. Sticky notifications for selected users</p>
<p>4. Loads more command line options</p>
<p> </p>
<h2>Bugs Fixed</h2>
<p>UTF-8 encoding issue.</p>
<p> </p>
<h2>Download</h2>
<p><a title="Download Code" href="http://www.echo-technology.co.uk/development/twitter+growl/trowel.txt" target="_blank">Download here</a>. Remember you&#8217;ll need some command line experience. See an example <a href="/development/twitter+growl/com.edm.trowel.plist.txt" target="_blank">launchd plist file here</a>.</p>
<p> </p>
<h2>Install</h2>
<p>Installation is relatively simple, you will need to install some Perl modules, refer to the <a href="http://www.echo-technology.co.uk/2008/11/11/how-to-growl-and-twitter/">previous post</a> for details.</p>
<p> </p>
<h2>Running</h2>
<p><em>NB: I have split this command for ease of readability.</em></p>
<pre>$ ./trowel -u &lt;&lt;EMAIL&gt;&gt; -p &lt;&lt;PASSOWRD&gt;&gt; -vv \</pre>
<pre>-I guykawasaki,twitter,stephenfry,rjstelling,macrumors,2009show \</pre>
<pre>-t twitter,stephenfry,rjstelling</pre>
<p> </p>
<p><strong>-I </strong>tells the script what to notify you about</p>
<p><strong>-t </strong>makes the notification sticky</p>
<p> </p>
<h2>Know Issues</h2>
<p>There does seem to be an issues when running in launcd mode where Tweets are duplicated, any testing and info you can supply on this bug will help no end.</p>
<p> </p>
<h2>Documentation </h2>
<pre>NAME
		trowel - display Twitter messages with Growl.

SYSOPSIS
		trowel -u -p [options]

EXAMPLES
		trowel -u &lt;username&gt; -p &lt;password&gt; -i 5 -l 180 -f "%t %d" \</pre>
<pre>		-t twitter,stephenfry,rjstelling \</pre>
<pre>		-I guykawasaki,twitter,stephenfry,rjstelling

OPTIONS
		-u, --username
			Twitter username

		-p, --password
			Twitter passord, if omitted it will be </pre>
<pre>		 	requested interactively</pre>
<pre>		-i
			interval between displaying tweets

		-l, --poll
			time between polls of Twitter feed

		-x, --exclude
			list of users to exclude

		-t, --sticky
			list of users who's tweets are sticky, </pre>
<pre>			-x and -i will override this

		-I, --include
			list of users to include

		-o
			output to STDOUT only, by-passing Growl,</pre>
<pre>			 use this for piping to another application

		-n
			initial number of Tweets to request, default is 5 

		-f "&lt;format&gt;"
			format of the Tweet
				%u - user
				%t - tweet
				%d - date time
				%l - location

		-g, --config
			a configuration file that sets command line </pre>
<pre>			parameters, this function is not implemented

		-h, --help
			show this help 

		-v
			verbose mode

		-vv
			very verbose mode

		-vvv
			debug verbose mode</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2009/01/26/twitter-growl-trowel-v10/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>2009 the Year of the API</title>
		<link>http://www.echo-technology.co.uk/2008/12/29/2009-the-year-of-the-api/</link>
		<comments>http://www.echo-technology.co.uk/2008/12/29/2009-the-year-of-the-api/#comments</comments>
		<pubDate>Mon, 29 Dec 2008 02:57:37 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[Apple TV]]></category>
		<category><![CDATA[OpenCL]]></category>
		<category><![CDATA[Web Sites]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[iPod]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=143</guid>
		<description><![CDATA[There are going to be a lot of out of work developers in 2009, all these idle man-months could be put to good use if companies opened up a little. Some of these developments could help drive the economy out of the downturn.
 
Apple, overall grade B+
Look what happened when Apple listened to developers and opened up the iPhone, the App Store. It [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2008%2F12%2F29%2F2009-the-year-of-the-api%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2008%2F12%2F29%2F2009-the-year-of-the-api%2F" height="61" width="51" /></a></div><p>There are going to be a lot of out of work developers in 2009, all these idle <a href="http://en.wikipedia.org/wiki/The_Mythical_Man-Month">man-months</a> could be put to good use if companies opened up a little. Some of these developments could help drive the economy out of the downturn.<span id="more-143"></span></p>
<p> </p>
<h2>Apple, overall grade B+</h2>
<p>Look what happened when Apple listened to developers and opened up the iPhone, the App Store. It has made quite a few developers rich and provided Apple with a valuable ecosystem for its products. </p>
<h3><a href="http://developer.apple.com/iPhone/program/download.html">iPhone/iPod Touch</a>, grade A-</h3>
<p>The second release of the iPhone software was a huge step forward, but there is still much room for improvement. All the <a href="http://arstechnica.com/articles/paedia/transforming-iphone-into-tv-gaming-device.ars">&#8216;hidden&#8217; APIs</a> if properly documented will provide developers the tools to create some amazing applications.  </p>
<h3><a href="http://www.apple.com/appletv/">AppleTV</a>, grade F</h3>
<p>There were high hopes for AppleTV when it was first released. But it has largely failed to live up to expectations. This would all change if an API were created, imagine if you could play all your iPhone games on your Apple TV with your iPhone acting as the controller.</p>
<p>A hint at the viability of an AppleTV API is <a href="http://en.wikipedia.org/wiki/Boxee">Boxee</a>. But this maybe short lived if these <a href="http://www.echo-technology.co.uk/2008/11/21/8-companies-apple-could-buy-but-probably-wont/">predictions</a> come true.</p>
<h3>Un-announced tablet Mac</h3>
<p>If in 2009 Apple finally release a tablet Mac or netbook, the iPhone APIs could provide new and innovative methods of interactions as-well-as providing next generation power saving facilities and processing with OpenCL.</p>
<p> </p>
<h2>Sony, overall grade E</h2>
<p>Sony could of ruled the living-room in 2008, and all they needed was a FireFox port instead of the god-offal browser implementation they cooked up at Sony HQ. And why haven&#8217;t Facebook released a FREE download for the PS3? Profile integration anyone? People will still buy a PS3 and a laptop, &#8220;for the internet&#8221;. When all they need is a decent browser to check their Hotmail and place a bet or two.</p>
<h3>Home (beta), grade D</h3>
<p>Home beta will boast 3rd party features but not on the grand scale of the Apple App Store. And that a shame. We&#8217;ll get some nice game add-ons. spaces and eye candy. Demos will appear in the arcade but nothing independent, I can&#8217;t sell my Twitter app for 59p and make £10,000. They have to get a D for lack of vision. </p>
<p> </p>
<h2>Twitter, grade A-</h2>
<p>Twitter are the golden boys, no business model but a rapidly increasing user base and all fueled by their simple and open API (take note Sony). </p>
<h3><a href="http://apiwiki.twitter.com/REST+API+Documentation">REST</a></h3>
<p>Not much to say, simply send and receive XML, simple and well documented. top of the class.</p>
<h3><a href="http://apiwiki.twitter.com/Search+API+Documentation">Search</a></h3>
<p>Search in Twitter is a powerful tool and is already the backbone of some notable web apps.</p>
<p> </p>
<h2>Google Friend Connect / Facebook Connect, grade C+</h2>
<p>Although new (just out of private beta), GFC and FC are shaping up to simplify your social networking experience. It is beyond the scope of this post to debate the pros and cons of each but one thing is for sure, they need to work together! Must try harder!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2008/12/29/2009-the-year-of-the-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wedding Technology &#8211; Geek-up your special day!</title>
		<link>http://www.echo-technology.co.uk/2008/12/20/wedding-technology-geek-up-your-special-day/</link>
		<comments>http://www.echo-technology.co.uk/2008/12/20/wedding-technology-geek-up-your-special-day/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 13:38:32 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=129</guid>
		<description><![CDATA[I originally  posted this to Slashdot, but they for some reason refused to approve it, so in desperation I&#8217;m opening git up to my loyal band of blog readers, please leave you ideas, suggestions and rants in the comments.
Next summer my sister is getting married. As the geeky single older brother I have been charged with IT for the day. My [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2008%2F12%2F20%2Fwedding-technology-geek-up-your-special-day%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2008%2F12%2F20%2Fwedding-technology-geek-up-your-special-day%2F" height="61" width="51" /></a></div><p><em>I originally  posted this to Slashdot, but they for some reason refused to approve it, so in desperation I&#8217;m opening git up to my loyal band of blog readers, please leave you ideas, suggestions and rants in the comments.</em></p>
<p>Next summer my sister is getting married. As the geeky single older brother I have been charged with IT for the day. My sister would like all guests to be able to download pictures form there digital cameras quickly and easily to a laptop or similar. She will then have a vast collection of images instantly.</p>
<p><span id="more-129"></span></p>
<p>I have far more ambitious plans, and this is where I need Slashdot&#8217;s help. Firstly I need to accommodate the different memory cards, sticks etc. I would also like to allow video downloads. Downloads should not be too difficult and ideally fast. After the guest has downloaded their images and/or moves I would like to publish these on Flickr and YouTube so people can view the images when they get home. In addition several projectors around the venue will show dynamic slideshows of the days pictures. Can Slashdot recommend hardware and software, Open Source if possible.</p>
<p> </p>
<p>I will of-course blog my eventual solutions and  provide a full &#8220;how-to&#8221; so every wedding can have a touch of geek-sheek</p>
<p> </p>
<p><em>Please leave you ideas, suggestions and rants in the comments.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2008/12/20/wedding-technology-geek-up-your-special-day/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OpenStartUp &#8211; the open source start up</title>
		<link>http://www.echo-technology.co.uk/2008/11/16/openstartup-the-open-source-start-up/</link>
		<comments>http://www.echo-technology.co.uk/2008/11/16/openstartup-the-open-source-start-up/#comments</comments>
		<pubDate>Sun, 16 Nov 2008 16:11:35 +0000</pubDate>
		<dc:creator>Richard Stelling</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web Sites]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Guy Kawasaki]]></category>
		<category><![CDATA[start up]]></category>

		<guid isPermaLink="false">http://www.echo-technology.co.uk/?p=72</guid>
		<description><![CDATA[Blank sheet for ideas. Name? Mission? Products? Logo?
 
Add your suggestions to the comments.
]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin-right: 10px;"><a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2008%2F11%2F16%2Fopenstartup-the-open-source-start-up%2F"><img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fwww.echo-technology.co.uk%2F2008%2F11%2F16%2Fopenstartup-the-open-source-start-up%2F" height="61" width="51" /></a></div><p>Blank sheet for ideas. Name? Mission? Products? Logo?</p>
<p> </p>
<p><em><span style="color: #c0c0c0;">Add your suggestions to the comments.</span></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.echo-technology.co.uk/2008/11/16/openstartup-the-open-source-start-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
