Rubinius comes to Melbourne

Posted on March 24th, 2008 @ 11:43 AM by

Rubinius is a reimplementation of the Ruby interpreter initiated by Evan Phoenix who has recently been hired by Engine Yard. Engine Yard is a hosting company that is positioning itself as the hosting provider of choice for Ruby applications by a variety of developer focused strategies. In an effort to raise their profile and gain credibility in the Ruby community they’ve hired Evan to work full-time on the development of Rubinius. They’ve also hired the excellent Ezra Zygmuntowicz of camping fame which gives them huge cred in the developer community. Not only are they just latching onto established efforts, they are creating new markets by going after the shared hosting crew by developing mod_rubinius . I would guess that the benefits are twofold – they look like nice guys by giving back to the community, but they also create a very easy path for them to upsell shared hosting into VPS. Everyone wins when this kind of effort is put into a business model.

Evan and Eric Hodel are out in Australia for the Rubinius Sprint set up by Marcus Crafter and fellow Engine Yarder Dylan Egan . In a side trip Evan came to Melbourne and spent three hours explaining how Rubinius worked and answering a heap of really interesting technical questions from the Melbourne crew before heading out for a few quiet (5am) drinks.

, , , , , ,

BarCamp Melbourne 2008

Posted on March 21st, 2008 @ 11:18 PM by

I’ve been a bit absent with my blogging so I’ve got a few retrospective entries for you.

BarCamp Melbourne : 60 people, 25 talks and an amazing day of interdisciplinary cahoots unorganized by Ben Balbo ! What I loved about BarCamp:http://barcamp.org/ was the range of presentations – everything from programming, databases and information modelling through to media centers, industrial relations, social activities and a hell of a lot of fun.

I’d like to give special mention to Paul Fenwick’s hilarious and poignant talk on “An Illustrated History of Failure”. He managed to show why testing costs – and quantified it. It was a showcase of brilliant execution on a topic which would, with an average presenter, make you groan.

Other outstanding talks where Andy G’s “OpenLazlo GUI, jiggy itouch GUI, openmaji” and Brent Snook’s “Lowering Usability Hurdles with the Wii”. Very, very cool stuff. In reality all the talks were excellent and had a lot to offer. I can’t wait to see the what the next BarCamp has to offer.

I was lucky enough to win a copy of The CSS Anthology from SitePoint:http://sitepoint.com/ for my talk on Monkey Patching (which I’d given previously as the Ruby Nuby night a few months ago). The after event drinks were in North Melbourne, with the suds provided by Microsoft

You can keep up with the activities on by checking out the BarCampMelbourne2008 tag on da internets .

, ,

Building a site for people with big imaginations

Posted on October 4th, 2007 @ 12:19 AM by

On Friday I presented a talk at Web Directions South conveying my tips on how to build a successful web application. I've embedded the presentation below
I set up the talk by presenting the issues that come with web development, which are usually new product development issues. Basically you don't know what you are building until you build it, so embrace the unknown and plan for it. Even in a sea of change there are things that help you get to market, these include:
    1. Good People - look for proactive people who communicate well
      Good Tools - there are lots of great tools that help get things done quickly and cheaply, so use them
      Simple Development process - use an agile methodology, they are well thought out but hard to get right
      Ship it - if you don't ship code, you don't have a product
      Fun - make work fun if you want keep your people and get the most out of them (and you!)
  • A pretty simple premise really, but it amazing me how easy it is to get this wrong. Usually I see companies get good people and then give them good tools and build a really overweight process around them so it is impossible to push software out of the organization. It's a hard problem and this is why successful web apps (and software in general) actually comes about.
    If you did see my talk then please leave a comment, I'd love to hear what you thought of it. But if you didn't I'm also interested in your thoughts on my uploaded presentation.
    If anyone has any photos of my presentation I'd love to get a copy - it appears that the official photographer was in the other room during my talk.
    I've deleted a boatload of comment spam, so if I've deleted a 'real' comment, please let me know and I'll add it back in.

    , , , , , ,

    Let the WebDirections begin...

    Posted on September 26th, 2007 @ 06:20 PM by

    I’m pumped. I’ve just arrived in Sydney from my one hour flight from Melbourne. I’ve checked in and hooked up to my $30 per day internet connection and I’m putting the finishing touches on my presentation. I haven’t spent much time in Sydney but from what I can see it is a beautiful place. Tonight there is an industry meet and greet which I look forward to downing a few brews and meeting the locals. Sounds awesome.

    During the process of writing my talk it has occured to me how much there is to writing software. My talk is targeted at Web Applications, but when all said and done, the same disciplines are required for web work as they are for all other application development. I was going to talk about RedBubble and why it was cool, but it was just a bit too specific – there wasn’t going to be anything concrete to take away. I concluded that a more valuable approach would be to convey (in a compressed timeframe) the a collectin of practices that make a group successful. I assume that the hard skills (HTML, CSS, coding, design) are being worked on because they are the most obvious, but the softer skill and the management practices are the skills that are harder to learn. So, in 50 minutes, I’m going to spew forth a collection of good practices with examples with a compresensive set of references. My hope is that I pique some interest and that the motived ones in the audience will pick up the battern and Go, Go, Go!

    If you are at Web Directions please come up and say hello and tell me that you’re reading my blog!

    Exceptional Cow!

    Posted on August 17th, 2007 @ 11:19 AM by

    Surprisingly, we are not perfect. Shocking. Even after our testing, we sometime release code into production with errors. We try to be good boys by not just ignoring these errors but we get the system to log them and send the info to our tech mailing list. In the Rails world, the excellent Exception Notifier plugin, from the prolific Jamis Buck, makes this a breeze. If you’ve got a Rails project and your not using it, then you should. Go on, get it!

    But now what? You’ve got the emails but with the constant pressure to get things done it becomes easy for everyone to just think “Oh, I’m a bit busy, I’ll let one of the other guys do it.” But they don’t, because we’re all busy. Introducing, the Exceptional Cow!

    The Exceptional Cow (a Tucows squigy toy)

    At our end of iteration review, like all good agile shops, we go through what’s good, what could be done better, what still puzzles us and what we are going to do next time (but details on this are for another post). We also have The Exceptional Cow™.

    Whoever has the cow is responsible for triaging all incoming exceptions for that iteration. At the end of each iteration The Exceptional Cow is ceremoniously passed to the next bovine herder. As the cow herder, you have the responsibility of examining all incoming exceptions and fixing it if it is a no brainer or writing it up as a bug for someone else to fix if you don’t have the time or if someone else has a much better grasp on the issue. Quite often all exceptions for the week are attacked in the final hours before we close off the iteration as we don’t want to start new functionality at that point.

    What it has done for RedbBubble is make our code more robust which means our customers have a better experience. It also makes everyone just a bit more careful and tolerant of exceptions. It is also a great way to get everyone across parts of the code base they wouldn’t normally look at including the systems side of things. The cow is our friend…

    Edit: The Tucows developer blog picked up on my post – Thanks!

    A full house at Melbourne Ruby Newbie Night

    Posted on July 8th, 2007 @ 09:55 PM by

    The Melbourne Ruby User’s Group held it’s first ever Nuby night last week. It was somewhat inspired by the RailsConf 2007 RejectConf that Marcus Crafter and I attended earlier in the year with the idea of many short talks presented by many speakings being preferred over a few ‘experts’ presenting on a wider range of issues. It also acted like a gong show – you had a hard limit of 5 minutes and when the gong went off you could imagine a walking stick wrapped around your neck pulling you off the stage. No pressure… Really…

    I spoke about the animals of the Ruby world – monkey patching and duck typing. After researching my talk I realized that I only had a cursory knowledge of both topics but preparing for this talk gave me the reason to learn more. I enjoyed the experience and would highly recommend it to anyone who wants to practice their presentation skills.

    A big thank you to Pete Yandell for continuing to organize the Melbourne Ruby community and to Marty Andrews for recording and editing the presentations.

    You can download my talks

    Big props to Justin French also from RedBubble who presented and to Xavier Shay who didn’t present due to time constraints.

    A fast grep for Rails

    Posted on June 17th, 2007 @ 10:01 PM by

    I often want to grep for a word recursively within a directory. That is easy! But quite often I know there are a bunch of directories that I can ignore. For instance, in my rails apps I don’t want to hear about subversion directories and I don’t want to search the vendor tree.

    I also don’t want to look at files that are really big – they are usually log files or binaries of some sort that I just don’t care about. So I put together the monster find and grep string that works for me.

    1
    2
    3
    4
    5
    
    find . -path '*/.svn' -prune \
        -o -path '*/vendor' -prune \
        -o -path '*/log' -o -path '*~' -prune \
        -o \( -size -100000c -type f \) \
        -print0 | xargs -0 grep -ne "SEARCH"
    

    Let’s break it down.

    
    
    find .
    – start searching for files recurively, starting from the current directory
    
    
    -path '*/.svn' -prune
    – ignore .svn directories
    
    
    -o -path '*/vendor'
    – OR ignore the vendor directory too.
    
    
    -o -path '*~'
    – OR ignore all the emacs backup files
    
    
    -o -path '*/log' -prune
    – ignore the log directory
    
    
    -o \( -size -100000c -type f \)
    – OR make sure the size is less than 100,000 characters and the type of thing is a file (not a pipe or a director or socket) – this usually gets rid of all non source files
    
    
    -print0
    – tells find to terminate the line with a 0. Which sounds really dull, but you can’t pipe the data (get the output from ‘find’ to ‘grep’) if there is a space in the filename.
    
    
    |
    – push the data from the command on the left to the command on the right
    
    
    xargs -0
    – take the input from the fine command, terminated with a 0 (the print0 from find) and send it to grep.
    
    
    grep -ne
    – search each file with a regular expression and when a match is found print the line number with the filename.

    The easiest way to use this is to put it into a shell file – I’ve put it into s.sh.

    My s.sh file looks like this

    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    
    #!/bin/sh
    
    if  [ ${#1} -gt 0  ]
    then
        find . -path '*/.svn' -prune -o -path '*/vendor' -prune -o -path '*/log' -o -path '*~' -prune -o \( -size -100000c -type f \) -print0 | xargs -0 grep -ne  $1
    else
        echo "Not enough parameters.  Usage: ./$0 searchstring"
    fi
    

    Then I make it executable by

    
    
    chmod 755 s.sh

    If you want to find all of the before filters you would do this

    
    
    s.sh "before_filter"

    and enjoy you super fast find command.

    , ,