RailsConf Europe - Wednesday Sessions - 3
September 19th, 2007
This is my last session of the day as i’ll have to run about by 5 and dive in a taxi to catch my flight.
Extending Rails to Use the Presenter Pattern
The Extending Rails to Use the Presenter Pattern could be re-titled talking Ruby On Rails beyond MVC by Jay Fields of ThoughtWorks.
He lost me quickly in ThoughtWorks-Speak, referencing everything in the ideas of Enterprise patterns. It’s Martin Fowler world. It’s tough to talk to people who may not be fully versed in your lingo and get the subtle references.
I’m gathering some ideas that Presenters are a way to make testing controllers easier and view testing isn’t really worth it (which I’ll agree with).
I’ll suggest checking out “Jay’s blog’:http://blog.jayfields.com/ if you are interested in these things as I didn’t get much out of this at all, Jay doesn’t even like the pattern. It was only about 25 minutes as well…. The person behind me just said “I’m feeling a bit swissed…..” and next to me “Possibly one of the most over-hyped talks here”
RailsConf Europe - Wednesday Sessions - 2
September 19th, 2007
First of all, some of the presentation downloads for RailsConf Europe have started appearing on the O’Reilly site here, so please run along and grab them. Nothing to see here.
Well ok, i’ll continue live-blogging from the afternoon sessions but I have a plane to catch soon :-)
Development Case Study: MindMeister
I’ve chosen the lest technical session because sometime the anecdote, the story, is more useful than the code. Development Case Study: MindMeister is the story off the online mind mapping tool “The google docs of mind mapping” apparently.
MindMeister It’s all AJAX (and a lot of it), tough call I think the interface could be way better in Flex and you have offline Mind-mapping possibilities with AIR.
They started with prototyping, then some design concepts , which all looked quite good if you ask me.
The name was the hardest thing to fine.
I hear that.. It is very hard to find a name. I agree you shouldn’t be obsessed with finding a free .com domain name, 37signals never did.
Private betas are good, 2 launches making it exclusive with lots of feedback. Starting with just friends but allowing invites to others. No longer than 2 months with an upgrade offer at the end.
They got lots of competitors and clones after launching which I think is a common problem, just make sure you are the brightest and the best. MindMeister have some good user stats, better traffic than their competitors (according to Alexa) but less features than the competitors. Usability is what makes them better. Every euro spent on design is worth it..
Recommendations
- Get a great designer on board
- Target non-technical users
- Watch every Apple demo
Marketing
- Write to bloggers
- Post site to app portals
- Create an API
- Write regular newsletter & blog posts
- “Add to del.icio.us / digg” button
- Spend time (and money) on SEO
- Be generous with Premium accounts
- Don’t comment spam
- Don’t pay for placements and ads
- Don’t start charging before its really stable
- Carefully select premium features
- Think of students et al
Technical Issues
- Everybody has them
- It pays to be honest
- Explain what happened
- Announce maintenance windows
It seems MindMeister are going offline with Google Gears which is the right move, maybe AJAX was a good choice after all. Use a canvas library which turns to VRML on IE.. And Wirecard
I’ve got to day playing with it now MindMeister is pretty good, its slick works well and I can see how it would be both useful and easy with is important in brainstorming tools. Bravo guys!
Outsourcing to Open Source
Another non-technical session Outsourcing to Open Source from Tobias Luetke at “Shopify’:http://www.shopify.com/. I chose this because i’m a real fan of Shopify, JapedPixel and because it’s more relevant to my business than the others. But I wish I could also have gone to Exploring Very Rapid Web Development Techniques with Hobo by Tom Locke, but those the breaks..
Tobias is talking about Liquid which for those that don’t know is a safe templating method for Rails which you can give to customers to make their own designs/themes without them breaking your app. And he wrote it on the plain to RailsConf 2005!! Not only is it safe but only exposes what you want to expose ie.
class Product << ActiveRecord::Base
liquid_methods :title, :price, :description
If you don’t know about liquid, go look it up. If you ever developing a SaaS with needs safe themes for users, its a great fit. Tobias is also talking about Vision which is a downloadable theme engine which works offline. Using this tool the launched a competition for themes for shopify with an iPod nano, the people who entered then now do full time Shopify themeing and earn more money from it than JadedPixel!!
Vision works by donwloading a Mock version of Shopify with no backend but the objects returned have real like data. Like a massive test case your users can download and theme.
JapedPixel also issued the open source AcitveMerchant as a library for payment processing gateways. It is really useful contribution to Rails. It supports 40+ gateways. Often they are commission by shopify customers who pay a ruby developer to contribute a specific merchant to ActiveMerchant which then automatically appears in Shopify. This is a great example of crowd-sourcing helping the community which then helps your product. It’s like work for free….
Crowdsourcing
Crowdsourcing is a neologism for the act of taking a job traditionally performed by an employee or contractor, and outsourcing it to an undefined, generally large group of people, in the form of an open call. For example, the public may be invited to develop a new technology, carry out a design task, refine an algorithm or help analyze large amounts of data.
Examples of crowdsourcing are threadless.com, freebase, Mechanical Turk, PeertoPatent, OrganizedWisdom. Tobias simple example of CrowdSourcing is giving your users the ability to create a new translation of text in checkout and feed that back to the system. They get credit for the translation and shopify track the progress of translation. This allows them to email authors when they add a new string that needs translation.
A really good talk from Tobias but he could have gone into the theme of crowd-sourcing more than than shopifies use of it, then given the examples. Just a structural thing.
For those interested. Shopify use Solr and love it. From being a public facing Rails application they get some really random requests such as a whole Shakespeare text in a param!. The run 25,000 public facing with different URLs, so they get a lot of web-spiders on the servers. They use memcache generating a unique key for every possible input for a page, check memcache to see if it has a version. If memcache doesn’t have it they gzip it and stick it in memcache. They use version numbers of each object and the version number is part of the key, instead of expiring they just have to lookup a new key and get a cachemiss so generate it. No cache invalidation.
RailsConf Europe - Wednesday Sessions - 1
September 19th, 2007
Trying to make better choices today which shouldn’t be too hard. So I decided on following up my Flex on Rails background (which I havn’t be exploring recently), but since I was the first tutorial on integrating Flex and Rails, I thought i’d check on it’s progress.
Building Rich Internet Applications with Flex and Ruby on Rails
This session was given by Simeon Bateman, who although not Adobe is certainly a Flex expert and has real world in-anger experience of Flex and Rails.
Unfortunately Simeon spent far too much time on Flash background and had some problems with the Internet before getting to the good stuff. But did manage to quick demonstrations of
To his credit the last 15 mins was some of the best and explained the advantages of AMF over HTTPService with great examples. Simeon reckons that RubyAMF is the way to go in the future as WebORB has not been updated in a year, other people I know concur with that.
The other question for people interested in Flash/Flex is:
Creating Hybrid Web and Desktop Applications with Rails and Slingshot
A session by Joyent on Slingshot. This is something i’ve had an interest in for a while, in the realms of the online/offline applications. In theory Slingshot offers downloadable Rails applications that run on the desktop but syncs with an online web-application.
It will do syncronisations, and you can extend the sync-hooks and will need to implement aggregate_data for your models to get the sync works. But it won’t do conflict resolutions, but it does handle auto-increment ids and foreign-key problems on the syncronisation side which is a pretty tough problem. It can also sync files as well as data between online and offline. You must have timestamps on your model to sync models which make sense.
I will do some drag and drop stuff but only on Mac OS X. This is a real problem, and certainly AIR could overtake easily in this area. I would like to see how I could get RailsDAV working with Slingshot on this.
Your code will be visible in the download, it is after all Ruby. So it better be open-source application on a behind firewall deployment. I don’t think this is this biggest problem as people won’t be able to copy it without the web-application component.
They downloads can be big. 20MB is the initial hit and applications can be as big as 100MB.
Overall it seems better on Mac OSX than Windows. It has DMG packaging, XCode customisation and changing Info.plist while the Windows deployment looks a lot harder.
In practice, its not complete. Here is a list of things it won’t do (Yet)
- sync conflict resolution
- encrypt your code
- domain specific online/offline issues
- package you application automatically
- update itself + your Rails app code
- native menus
But this is still one of the most interesting and innovative things being talked about at RailsConf Europe so was certainly worth intending. The presentation was well done and paced well, including presentation then questions then demo which is a lot to fill 45 minutes. Showing you don’t have to aim your presentation at the lowest common demoninator.
I’m wondering if you could just use the sync_controller parts of slingshot and write an AIR end…. Evil but useful.
Great demo..
RailsConf Europe - Wednesday Keynotes
September 19th, 2007
Partly due to having to check out my hotel, partly due to my hangover and partly due to not being bothered I missed today’s pre-roller advert by ThoughtWorks to today’s keynotes.
But i’m here now for the session on Best Practices. A bit late. Siting at the back nursing my headache.
The Best Practices session is very codey but still entertaining so far covering test-first, associations, method naming and chaining. Expressive Interfaces they call them, readability and undestanding. Now moving on to with_scope and the dangers of using a before_filter with a scoped command, hence reducing all queries to a limited scope. For instance only finding posts for the current user. Instead use associations:
current_user.posts.find(params[id])
But it has uses. You can use method_messaging with a with_scope and create a dynamic has_many association through a proxy. Similarly very cool but I can see that being mis-used also. I think using method_missing should be a last resort, documented heavily and only used if it significantly improves readability or time. Not really as a best practice.
The use of conditions and commands in Ruby can be confusing as there is many ways of doing it. The question, which can be understood quickest?
command if conditional?
....
if conditional?
command
end
...
conditional? and command
...
conditional? && command
...
All of the above do the same. For me number 2 is clearest but involves more typing, but I hate mixing up commands with conditionals in an expression, and the speakers agree.
RailsConf Europe - Tuesday Keynotes
September 18th, 2007
Tuesday is ending now with some final keynotes
- Beyond Startups: Rails Demand in the Global 2000 Jonathan Siegel, President, ELC Technology
- The Rest of REST Roy T. Fielding, Chief Scientist, Day Software
- Rails and the Next Generation Web Craig R. McClanahan, Senior Software Engineer, Sun Microsystems, Inc.
Basically sandwiching in Roy Fielding, a uber-guru of the web between some Diamond sponsors seems like a commercialization thing. A theme of the conference maybe.
Beyond Startups: Rails Demand in the Global 2000
Thanks to Jonathan Siegel we heard the obvious, that yes some Global 2000 companies are starting to use Rails. Big shock. Shame the man can’t present at all. Little note, if your sponsorship money buys you a presentation, learn how to present an engaging talk.
The Rest of REST
An intellectual and precise talk by Roy Fielding, was interesting and historically educating but academic for most people there. Still I find the elements of architectural style and forming lasting styles of architecture is really interesting from a consulting point of view. The architectural style a way of deducing principles of technology removed from any of the problems of actual languages and products.
Rails and the Next Generation Web
Craig McClanahan is a great speaker and someone we are interested to hear from. This should be the principle of buying your speaking slot, put up something interesting with an interesting topic, not just a marketing speech.
Craig talks about his love of Ruby and Rails even after being a Java-guy for so many years. A shift for Sun? Rich Internet Applications and Horizontal scaling, gone is Moore’s Law. Well Craig says that Java web frameworks pace of innovation is slowing, and the Java community know they need to look to the future. Could the Rails community go snow-blind also? Forget to look to the future..
Mentions three plugins. act_as_cached, act_as_state_machine, will_paginate… get it wrong as they only extend ActiveRecord. While acts_as_autenticator, paginator gets it right as they don’t care about the implementation.
make_resourceful plugin is a good example of separating API from implementation where you could plugin ActiveResource or ActiveRecord.
Unfortunately Craig only has 50 minutes which is no time at all. I would love to hear a proper 2 hr talk from him as it seems he has some great stuff to say.
RailsConf Europe - Choosing sessions is so hard...
September 18th, 2007
Tuesday at RailsConf and choosing sessions is damn hard. Am I missing out on something really great going on in other room? Could the other guys be as boring as this speaker? With nothing more than a title and a synopsis we select from our buffet.
My bad decisions so far:
- Chose Making Rails More (Artificially) Intelligent. Should have chosen Deployment and Continuous Integration from the Trenches. Although non of the first sessions were apparently great
- Chose Meta-Magic in Rails: Become a Master Magician. Should have chosen Meta-Magic in Rails: Become a Master Magician. Very funny, entertaining, informative and very very popular.
- Chose Really Scaling Rails. Should have chosen Utilizing Amazon S3 and EC2 in Rails
- Chose Tabnav: Do We Really Need a Plugin for Tabbed Navigation?. Should have chosen Tabnav: Do We Really Need a Plugin for Tabbed Navigation?. Although I hear Rubinius, Improving The Rails Ecosystem was really good, the Tabnav talk was entertaining and something I may use soon.
Making Rails More (Artificially) Intelligent
The speakers were in Spanish and their English was difficult to understand especially in a presentation context, but well done for giving it a go guys. Basically the talk introduced Bayesian graphs and probability tables, Bayesian classifiers and genetic algorithms and some Ruby libraries for using them. Unfortunately they didn’t make the Rails context at all. I think a talk on using these kind of algorithmic tools would be a winner with the right presentation context. But hard when it’s not your first language.
I learnt something and it’s worth checking the libraries if you ever feel you’ll need to solve an AI problem.
Meta-Magic in Rails: Become a Master Magician
Very entertaining and very popular, if the conference room had rafters people would be hanging from them. The room was packed. I would hate to go up against Dr Nic, the other rooms must have been empty.
I quit coding because I thought I hated it, turned out I just hated Java.
Dr Nic not only talked about fun little things with method_missing, const_missing and using the meta abilities of Ruby he used them as a weapon against other languages
Java is like… Keith Richards. not so cute anymore, can tell you stories about himself, can’t change his behavior
Great talk but Dr Nic was keen to point out that that in some cases the meta-magic is.
not useful but it is funny..
Really Scaling Rails
Was by a Twitter guy on scaling and had some bits of useful information but really didn’t engage. The really useful elements were a few tips such as how to encode the page peformance into every the response of every page. A shame.
Tabnav: Do We Really Need a Plugin for Tabbed Navigation?
A lovely talk by Italian speaker Paolo Dona who was engaging and funny. I expected the room to be near empty, after all who needs to hear about tabbed navigation. Instead Paolo packed the small room he was given, obviously they knew more than me.
Paolo’s main thing was that sure Ruby on Rails has meant he has had to write less code but he still spends the same amount of time writing HTML/CSS. In fact relatively he was spending much more time on HTML/CSS than coding.
where is DHH? I want to kill him. He has turned me into a designer.
So Paolo has widgets
ruby script/plugin install svn://svn.seesaw.it/widgets/trunk
Widgets for tabs, navigation, showhide, tablizer, tooltips, nubbins. To create user interface design patterns with less effort. It’s a fine idea and i’ll look to use them soon.
Not a bad spread for the food either…..
RailsConf Europe - Dave Thomas Keynote
September 18th, 2007
Last night Dave Thomas kicked off RailsConf Europe with something different. Rather than evangelize Rails or talk up the lastest/next big thing, Dave set the tone for the conference by stripping back it to the core philosophy’s of software development and created a grand analogy.
Rails and Art
Dave’s well spoken, in a mid-atlantic accent, and funny keynote concentrated on the definition of software development as art or engineering. By making multiple analogies to software development to famous works of art and the methods of artists of history, Dave was trying to create a philosophy behind not just good software but truely great, beautiful software. He looked at four main things.
Starting
Just as the artist is faced with a blank canvas, the developer is faced with a blank IDE. But an artist doesn’t jump right in and start to create the masterpiece. Instead the use sketching and work in other mediums to deduce how a masterpiece will evolve. Consequently the developer should work in other mediums, or index cards or lego. They could use prototyping of small complex areas, exploratory testing to validate understanding and creating a “tracer bullet”, a complete end-to-end system but without any details, later they can fill in the details or just start over.
be prepared to throw 10 away, because the 11th will be sweet.
Stopping
In a grand mosiac such as the sistine chapel, its hard to be close to the detail when the work is so large. So Dave talks about about how to chapel is broken into panels, all unique “loosely coupled” but come together to tell a long story. Hence developers can set boundaries not just in function (modularisation) but in time then honouring those boundaries. Short distinct length development times and if your feature is only half finished at the end. Stop and be prepared to throw it out and do it again in the next iteration.
Satisfy the customer
Pictures versus portraits. An artist painting a portrait tries to look inside someone and find a way to express it, even if its abstract its still a representation. The developer needs to find a way to satisfy the underlying requirement.
Be in the habit of not listening to the client.
But to do so a developer needs to look beyond the surface, be appropriate, work with client and get to know them. Dave used two great anecdotes, the NASA space pen (the real story) and the driving license camera as two conflicting stories. Where some clients don’t realize they have the need for a technology solution but some clients don’t need high technology, listen to what they really need.
Why
There is art in engineering and engineering in art.
Be an artist. Create something great. Create something beautiful.
Sign your work. No more anonymous applications
My review
I really liked Dave Thomas’s keynote, he is a fine speaker, smart and inspirational. Talking to a few people afterwards there was a little “Yeah but that’s what we are like…” but for two things..
- Not all developers are the artists they think they are.
- The majority of development teams don’t know this at all, they are stuck in the production mentatility of ‘lines of code produced per hour’ and ‘man-days effort’
I think Dave’s keynote would have gone down best with the non-technicals, the managers, the CTO’s, the executives. Maybe then they can treat the developers a bit better than code generation machines and like real artisans.
Stuart Eccles
RailsConf Europe - In Berlin
September 18th, 2007
I arrived in Berlin yesterday and the sun was shining, that makes a change from London but today its raining, so exactly like London.
There is a large assembly of Railers, official figures have 39% Germans, 19% Brits, 11% Americans and the rest. Dave Thomas did his keynote last night (more to come) and DHH is just finishing his this morning.
I have some starter pictures for you:
LiveRail off to Berlin RailsConf Europe
September 13th, 2007
Just to confirm that I will be off to Berlin next week and will be hanging around at RailsConf Europe on the 18-19th. If you want to talk RailsDAV, Flex with Rails, Facebook or the state of the media industry in London, ask around for me.
I’ll be blogging from the event also, like many many others ;-)