Archive for June, 2007

Multimedia died for a reason

Thursday, June 28th, 2007

The 37 Signals Blog has stirred up controversy again with a post about HTML, CSS, and JavaScript:

On the user experience side of things, we’re not even close to tapping out the potential of HTML. The majority of web sites and applications still suck.

Of course, the flame-war began immediately:

“Flex/Flash/Apollo is totally the future”
“No it isn’t”

I think that is definitely true that we have only scratched the surface of HTML. It’s only in the last couple of years that HTML, JavaScript and CSS have really become advanced, stable and widespread enough to be used for complex application development.  Even features that have gained ubiquity, like auto-complete text fields that talk back to the server, are very recent additions to the developer’s toolkit.

Having worked with WebStart for several years now, the hardest problem to solve is the additional installation. Java makes this particularly hard, but when you use a runtime on-top of the browser, you will always have this additional barrier to adoption. Rather than prospective customers being able to use your application straight away, you are placing an extra hurdle in front of them.

The problem is not insurmountable, but it is there.

On top of all of this, most RIAs I have seen don’t really do much more than a “vanilla” Web 2.0 application anyway. I come from a Multimedia background  (I did a lot of CD Authoring with Director in the 90s) and I’ve done far too much Swing, so I’ve seen many, many fantastically bad applications. There is a reason why software tends toward the a standard set of application principles - business applications don’t need much singing and dancing.

Auto-complete, edit-in-place, drag/drop, lists, options are all standard fare with HTML, CSS and JavaScript  About the only piece that is really missing from the stack is the ability to zoom effectively.

Whichever side of the debate you come down on, you have to admit that it’s going to be an interesting few years.

Useful resources for building Facebook Applications with Rails

Monday, June 25th, 2007

I’ve been looking at building a Facebook app using Ruby on Rails.

Some handy resources:

Hire Toby

Friday, June 22nd, 2007

I can offer over 10 years of commercial experience in web application development.

I’ve worked with a range of technologies, and many different clients from small business to big business and government.

I am committed to the user-experience and in creating elegant, sophisticated interfaces.

I am available for Project work.

Contact me for more information and a complete CV.


Examples of my Recent Work:

Tradelaneway
An all-singing, all-dancing, AJAX-ified Social Network and Content Management System. WebImprints is designed as is the simpest possible CMS and intended as an entry point for Small Business users. The software is developed with PHP, MySQL, Scriptaculous and Prototype and is integrated with Amazon S3 for image storage and designed to scale to 100,000’s of users. Currently rolling out an installation of 10,000 sites.

AutoTwit
AutoTwit allows you to update Twitter automatically. Simply write a post and schedule an update. The site was developed with Ruby on Rails, MySQL, Scriptaculous and Prototype and uses the Twitter API to post scheduuled updates.


Technologies

  • Ruby On Rails
  • PHP 4/5
  • AJAX, Javascript, JSON, Prototype, Scriptaculous
  • API Integration
    • Amazon Web Services (S3, SQS)
    • eBay
    • Twitter
    • WordPress
    • Google Maps
    • Google Feed API
    • Adwords
  • HTML, CSS, XHTML, DHTML, XML, XSLT
  • MySQL 3+
  • REST Web Services, SOAP, Hessian, XML-RPC
  • RSS & Atom Syndication
  • Java (including J2EE, EJB, JDBC, threading, reflection, Swing)
  • EJB 1.1 / 2.0 (JBoss Application Server, Sun Server Platform)
  • Subversion, CVS
  • Linux
  • And many more …

Facebook as the new uber-app

Wednesday, June 20th, 2007

Facebook is fast becoming my uber-application … it now can assimilate just about  everything. I Twitter from Facebook, I play Chess in Facebook, and I am now looking for something to hook WordPress up (or I might develop that myself) then I can blog from Facebook as well.

One app to bring them all and in the darkness bind them.

And better yet, I put a notice in the Marketplace looking for some freelance development work and within an hour had a response.

Which reminds m, if you need some project work, I’m available. 10 years of experience developing web apllications with a host of technologies.

My favourite Ruby Gem is Magic

Tuesday, June 19th, 2007

On Ruby asks in June’s Blogging Contest:

“Other than Rails, what is your favorite Ruby Gem, and why?”

My favourite Ruby Gem is Dr Nics Magic Models.

Magic Models weaves a dark spell on your code that makes your ActiveRecord Models just disappear. It’s glorious for demonstrating to the skeptical the possibilites affored by Ruby, and it makes prototyping and development even more efficient. As Dr Nic says:

In a way, MM works like scaffolding does at the controller level - it lets you get your application “working” faster even though you’ll probably rewrite it in the end anyway.

Starting with Magic Models is a matter of installing the Gem and requiring it in your application:

gem install dr_nic_magic_models
require 'dr_nic_magic_models'

Now you have Models that appear based on your defined database tables, no other code required. So if you have a People Table, you automagically have a Person Model with attributes matching the columns defined in the table.

If you crack open the gem, you find the Magic isn’t so magic after all. The crucial action occurs in const_missing.

def const_missing(class_id)
  begin
    return normal_const_missing(class_id)
  rescue
  end
  @magic_schema ||= DrNicMagicModels::Schema.new self
  unless table_name = @magic_schema.models[class_id]
    raise NameError.new("uninitialized constant #{class_id}")
      if @magic_schema.models.enquired? class_id
  end
  superklass = @magic_schema.superklass || ActiveRecord::Base
  klass = create_class(class_id, superklass) do
    set_table_name table_name
    # include DrNicMagicModels::MagicModel
    # extend DrNicMagicModels::Validations
  end
  klass.generate_validations
  @magic_schema.inflector.post_class_creation klass
  klass
end

const_missing is called when the Ruby Interpreter cannot find a constant. In the example above, if we call the Person model (using Person.find, for example), const_missing is called and Magic Models goes into action - checking the database for a corresponding table and creating a class with the appropriate attributes and validations. The rest writes itself.

Magic Models looks like magic to those uninitiated in the wonders of a truly dynamic language.

I use them to get a leg-up on new development. I have also used them to demonstrate to some colleagues the things that are possible with Rails - scaffolding for free, testing baked-in, easy AJAX and code that isn’t there but works anyway.

It’s worth learning, just to see the expression on the PHP and Java guy’s faces.

If you’re looking for more:

About Toby

Sunday, June 17th, 2007

This blog belongs to Toby Hede.

Some RandomThings about Toby:

  1. He lives in Melbourne, Australia.
  2. He runs his own software development business in between playing music, cutting code and creating games.
  3. He works as a consultant software engineer for a small web company to pay the bills.
  4. He is increasingly obsessed with Rails, Prototype and Scriptaculous.
  5. Toby has 1337 hacking skills in Ruby/Rails PHP and Java.
  6. He is available for project work.

Hello world!

Sunday, June 17th, 2007

Welcome. My name is Toby Hede. I am a software developer and enterepreneur living in Melbourne Australia. I work predominately with Ruby on Rails, but pay the rent with my 1337 PHP and Java skills.

This is my space for collecting any random, and probably technical, thoughts I have that don’t fit in the million other spaces I have on the web.