FreeThingo coming soon

Gary McGhee - Friday, November 07, 2008

I'm working on a small pet project, a site that gives a more useful view into the FreeCycle email list. FreeCycle's concept is simple - that people announce via the mailing list that they have something of value that they no longer need, and are offering it for free. Subscribers then reply asking to be the receiver, the offerer chooses a receiver, and they arrange the transaction.

The problem is it is too popular for a simple email list, and something offered a week ago but not taken is buried in following emails. There's also no way to watch for a type of item becoming available, or filtering based on location (though Freecycle lists are usually specific to a city).

Enter FreeThingo.org. It will receive and process messages sent to a Freecycle list, (currently Perth's) and provide various ways of filtering and presenting the stream of information.

I'm building this in my two favourite technologies, Adobe Flex and Ruby on Rails. A project like this is a prime opportunity to do a little R & D. For providing data to the grid control in Flex, XML is an easy option, and Rails' XML Builder is great for providing the required input. Typically this XML is either loaded from a static file or dynamically generated service. This data is then out of sight of search engines as well as requiring an extra request.

This time I'm trying an idea esposed here (Flash Augmenting Standards). I've rendered the data as XHTML, and then consumed it in Flex. Once I had figured out a few utility functions it all flows quite smoothly.

I needed two data structures:

  1. A table of data, with named columns and rows. This is a classic case for good old TABLE. While this poor tag is shunned these days for its unnatural use as a layout tool, tabular data like this is exactly what it was meant to do.

  2. A set of name/value pairs. This was implemented using the "Definition List" DL tag, and its counterparts DT and DD. This also works quite well.
    I currently have the definition list inside the table caption to keep it with the data, but I will probably move it outside the table.

Because its still essentially XML I'm still rendering it with the Rails Builder class, and using E4X on the Flex side to read it. The main difference is the extra levels of tags, and the less descriptive tags required in order to be standard HTML.

For browsers without Flash and search engines, it will simply look like a typical table of data. With a little effort it could look quite presentable, even dynamic with something like jQuery involved.

A win-win all around it seems.

Inaugural Meeting of Perth Flash Developers Group with Kai Koenig !

Gary McGhee - Monday, October 20, 2008

With the rise of Flex as a developers platform, all this talk of RIAs, and Flash continuing to grow strong, I think its time Perth had a Flash meetup again. So after talking with Matt Voermann (previous MMUG & Flash Platform Users Group Manager, now Sydney-based) and John Koch (Adobe Developer Relations Manager for Asia Pacific) I have organised the first meeting to include Kai Koenig while he is here for Edge of the Web conference.

Why the name ? Even though I am primarily a Flex developer, I decided to use Flash and not Flex in the name. Flash is the vernacular name for anything that runs in the Flash Player, and when I mention Flex, most web developers don't know what I'm talking about. There are also the old school ActionScript programmers to include, and I think the word "Developers" makes it clear that its more aimed at coders than designers, but of course pure (and impure!) designers are more than welcome.

The graphics are based on images from an electron microscope of Oenothera fruticosa pollen.

3:30-5:30pm Wednesday, November 5th 2008 
Velvet Lounge (Grosvenor Rd side of) 
Flying Scotsman Hotel 
Beaufort St, Mt Lawley 
(same venue and just before Port 80 meeting at 6pm)

See www.perthflash.org

All welcome !

Boagworld Podcast - where have you been all my web dev life ?

Gary McGhee - Sunday, October 19, 2008

I've been looking out for and listening to several web development related podcasts for sometime. Being in the most isolated capital city in the world - Perth, Australia - conferences are few and far between, and podcasts are gold. But somehow I've missed the BoagWorld Podcast. Maybe it says something about the US-centered web industry.

Look folks - there's 139 shows and some real meaty content too !

Capistrano local and remote prompt handling

Gary McGhee - Thursday, October 16, 2008
This is one of those things that I've wanted to figure out but never have in Capistrano (2.5)
It does both prompting the local user for a value, and fulfilling the remote machines prompt for a value.
I love Capistrano even more now !

# give block with |aText,aStream,aState| that returns response or nil
def run_respond(aCommand)
 run(aCommand) do |ch,stream,text|
  ch[:state] ||= { :channel => ch }
  output = yield(text,stream,ch[:state])
  ch.send_data(output) if output
 end
end

task :dump_db_svn do

  # just dumps db to a file in a svn dir
  run "mysqldump --user=root --password=nottelling --databases --add-drop-database joomla_db > /root/joomla_db_snapshot/joomla_db.sql"

  # svn is using ssh+svn, so prompts for a passphrase (on the remote machine)
  run_respond 'ssh-add somekey.ppk; svn commit /root/joomla_db_snapshot -m "latest joomla_db"' do |text,stream,state|
  case text
  when /Enter passphrase/ then 
  Capistrano::CLI.password_prompt(text)+"\n" # this prompts the local user with the remote prompt text, then returns the result
  end  
  end

end

Buzzware Beginning

Gary McGhee - Wednesday, October 08, 2008
So as of August I've been a freelance developer, based at Two Twentys shared office in Leederville with 4 other guys; Myles Eftos (Mad Pilot Productions) Grant Bissett (Speak Interactive), Alex Pooley (Alex Poolely Design), and Ben Giles (Spoon Media). I've switched to the Mac and have just completed my first project HelenAnsell.com