Hi, this blog is no longer maintained, my new blog is here

Ruby On Rails and a Conning Israeli entrepreneur

Showing posts with label framework. Show all posts
Showing posts with label framework. Show all posts

Update: Social Network Ruby on Rails Applications


Update 28/1/09 : Added El-Dorado

Update 27/1/09 : Added OneBody
Update 12/2/09: Added EchoWaves, OpenMind and Forulio

One of my current consulting positions, involves a startup company with a great idea and a great social network implementation idea.
For that matter, i have been scavenging the web lately for Rails based social netowrking plugins, Engines or maybe even a skeleton application for those guys and i found some very good solution apps and infrastructures, the only problem rails Rails 2.0 compatibility (which i didn't check yet, and some don't indicate) and Documentation, which seem to be neglected on almost all those apps.

So, Here's the current list:

LovdByLess
include blogs, user profiles, photo uploads, forums, friendships and user-to-user messaging funcionallity.
Looks great and has a great look and feel.
Comes as a full application under MIT license.


CommunityEngine
A Rails engine, now supports Rails 2.0.
Gives you the basic functionality for a social networking site. It includes features such as User pages, forums, uploads, geo searches, blogging and more.
Important to say that extending the basic engine with your own controllers and models, is supposed to be easy and simple, i am currently testing it out so i don't really have an opinion yet.
Documentation has to be improved though, a lot.

TOG, presentation
TOG is basically a package of features (in the form of plugins) which you can choose to add to your applications as one, or as a whole.
Using these prepackaged and automated features should let you focus on the real key point about social networks: keep the conversation going with your members. If you’re just starting a social site or wants to polish your community with lovely social capabilities maybe you should give tog a try.

Insoshi
Features include:
  • Activity feed
  • Personal profiles with photo upload and comment walls
  • Internal messaging system with read/replied/trashed messages
  • Contacts list
  • Blogs with comments
  • Discussion forum
  • Search for profiles, forums, and blogs
  • Admin panel with site preferences
  • Option for email verification and activity notifications
Documentation is kind of missing here too.

LuvFoo
Under developement, but runs several sites at the moment,
include some neat features on top of the plain simple ones, such as API and CMS intergration.


OneBody
Although i am not sure why they indicate their audience as Churches (?), it looks like a good social framework with a lot of features such as:
  • Membership Management | aka ChMS
  • Online Directory | search, print
  • Groups | email lists, attendance tracking
  • Social Networking | friends, favorites
  • Content Management System | page editing
and more, read on in the Wiki manual


El-Dorado
Looks nice and packed, a pretty live demo site too.
Features include:
  • Forum
  • Group chat
  • Event calendar
  • File sharing
  • Random headers
  • Avatars
  • Themes
  • Privacy settings

EchoWaves

EchoWaves
This is a group chat social network application. You can start conversations and connect wih other users while discussing it.
It is possible to make a conversation read-only for presenting a content too.

Openmind

Openmind
Openmind enables you to create a collaborative environment for collecting the thoughts of your customers/collagues on a product/service.
User can discuss online about an idea & vote for the features. Admin can mark the most-requested features as "to be included in next releases" & users get informed from this. A nice application for creating a constructive community.

Forulio

Forulio: Ruby on Rails Forum
Forulio is a Ruby on Rails forum application with a similar approach to popular forum softwares like phpBB or vBulletin.
It supports sub-forums, has a monitoring page for viewing the activity and has tagging integrated.

Other resources:

CSS Frameworks Tutorials and getting started guides

First thing, it helps.
Exactly the same as in Server side languages and client side languages, frameworks are a great improvement (in most cases) to a regular off the board development.
There are a lot of CSS frameworks these days, Noupe guide to CSS framework gathers the best of the guides and tutorials for each of the major frameworks.
I personally tried to use several of them and i guess the 960 CSS framework proven to be the easiest to handle (for me, and i usually don't do CSS).

Beautiful Javascript Date Pickers

Source: Woork! - Beautiful Javascript Date Pickers
Great list of Date Picker plugins and scripts, for several Javascript frameworks.

Yet another Framwork: Pylons

Pylons combines the very best ideas from the worlds of Ruby, Python and Perl, providing a structured but extremely flexible Python web framework. It's also one of the first projects to leverage the emerging WSGI standard, which allows extensive re-use and flexibility — but only if you need it. Out of the box, Pylons aims to make web development fast, flexible and easy

Looks like a fun language, after reading the Pylon book for a few days now, it looks very interesting.

This framework is based on Paste and allows some extended python usage, templating, modeling and basically a full MVC application development interface (even CouchDB).

What i can say about it, is that it's some kind of another Rails-ish framwork ("paster" for "generate" for example), these frameworks are popping like mushrooms these days (Currently reviewing the PHP Akelos framework as well)

The pylons web site offers general information, a link to the online book and some screencasts.

Noura Yehia: 45+ JQuery user interface plugins you must use

The web is different these days, i remember the days when anchoring (<a name="jumphere">) were considered as magic.
These days, following the overwhelming outburst of javascript frameworks, it's getting easier and simpler to generate extended, usable, fun and sexy interface.
This 45+ JQuery user interface plugins you must use list, is packed with some slick design and usability supplements that should be strongly condered when choosing a javascript framework and user interface guidelines for your application.

David Walsh: The most preferred Javascript Framework

David Walsh, one of my favorite RSS destinations, posted a poll a while ago in order to get a quick look over the preferred javascript framework in use these days.
Well the winner is JQuery, but not in a too wide margin from MooTools at the back, at least not as i thought it would be.
I personally voted for JQuery at that time, but since i switch frameworks depanding on the project nesecities, i think my vote is divided equally by MooTools and JQuery. Dojo was well at the back with only 2 (!!) votes and a close to 0% of vote share, kind of a surprise to me, i was really impressed by Dojo and was considering using it, or at least benchin' it out a little bit.

An alternative to MochaUI: a JQuery based virtual desktop

I am personally using mochaUI is my current projects, and it was one of the main reasons a started working with MooTools at all, but this alternative to a web based desktop implementation is also something to pay attention too.
Although MochaUI is far more feature-packed, i think that this basic JQuery implementaion can be a good start for starting off a new web based desktop application (Add some plugins, and ding! ready).

Tim Bray: Ruby is the Leading Language for Web Applications

A pretty while ago in fact (Apr 2008), i wonder what the status is right now..
"In his keynote talk at the recent Silicon Valley Ruby Conference, Sun’s Tim Bray asserted that “PHP and Ruby are the languages of choice for new web apps.” Coming from most people, this wouldn’t be a remarkable comment, but given that Tim is Sun’s director of web technologies, it is worthy of note. Java wasn’t even on Tim’s list, much less his recommended solution."
from Building Web Apps (subscribe to their RSS, recommended!)

Trying out Akelos

Akelos became very intersting after a guy pulled it out of the sleeve in one of my many "Rails is better" duals with PHP/.Net developers.
I had no idea at the what he was talking about (shame on me..) so i decided (and promised that guy) to do some work on Akelos a little bit, and than go back and tell him that i still prefer Rails.

Well, a little bit about Akelos.
Akelos is an MVC PHP web development Framework which consists over favoring convention over configuration, sounds familier?
As far as a basic overview and right before starting my first Akelos application, i find it rather a PHP Rails replica, even with some basic convention naming (has_many? again?) but the basic syntax is still PHP and consists too much over direct SQL.

$Project->findFirstBy('language', 'PHP');

in ruby
Project.find_by_language('PHP')


This is a very simple example, i will try to find out how well it goes when trying to preforms something more complicated in Akelos.

NETTUTS: JQuery for beginners

http://nettuts.com/articles/web-roundups/jquery-for-absolute-beginners-video-series/
great great tutorial, although i am (currently) a MooTools fan, i think this is a very good guide collection for JQuery.

Moo.rd: lightweight Mootools extestion

Mootools is awesome, but it still lacks some of the features that JQuery has when dealing with effects and some other not-so-important stuff.
Moo.rd is an excellent extension which implements some more features back to mootools. features such as some extra effects (finally, a mootools shake effect!), windows, sliders and more.
recommended, get it here.

Javascript Frameworks: i am changing my mind

well, originally i chose JQuery, which seems too-awesome-to-ignore at the time, but a recent project made me decide to try Mootools once again, well, it's amazing.
MochaUI is an excellent UI library in Mootools, the simplicity is overwhelming and on top of it all the dynamic pseudo selectors as lately mentioned in David Walsh's blog... amazing.


/* grab "checked" elements */
Selectors.Pseudo.checked = function() {
return ('input' == this.get('tag') && ('radio' == this.get('type') || 'checkbox' == this.get('type')) && this.checked);
};

/* grab "selected" option elements */
Selectors.Pseudo.selected = function() {
return ('option' == this.get('tag') && this.selected);
};

/* grab random elements */
/* credit: http://blog.kassens.net/custom-pseudo-selectors */
Selectors.Pseudo.random = function(probability, local) {
return Math.random() < (probability || .5).toFloat();
};

/* grab elements with no value */
Selectors.Pseudo.noValue = function() {
return '' === this.value;
}

/* grab elements with a specific empty attribute */
Selectors.Pseudo.emptyAttribute = function(att) {
return this.get(att) == '';
}


i think i might have some second thoughts about JQuery..

MochaUI: Javascript User interface library

MochaUI is a web applications user interface library built on the Mootools JavaScript framework.

Uses:

Web Applications
Web Desktops
Web Sites
Widgets
Standalone Windows and Modal Dialogs

Get it and watch demos here

Finally Decided: JQuery, not Prototype

JQuery (for those of you just landed from Mars) is an unobtrusive javascript framework. read more at the JQuery home page.
jQuery supports Behavior driven development and is based on traversing HTML documents by CSS Selectors.
vs.
Prototype,
Prototype is also JavaScript library for Class driven development which makes life easier working with JavaScript. Prototype library has a good support in Ruby on Rails via helper functions and is basically well embedded in.

i decided to try to match both of these libraries (and dojo for the matter of fact, but the project was halted), and here are my conclusions.


  • BDD


    JQuery is very similar to CSS by assigning the HTML element behaviour out-side the HTML, so it is generally more adequate for MVC.
    for ex:

    $(element).click(function() {
    alert("warning");
    });

    simple.

  • Chaining
    Chining methods is as simple as ruby. period

  • CSS Selectors

    Since JQuery is based upon CSS, you can access any element by it's CSS path, and avoid these annoying pesky ID's you have to put using Prototype.


for some more comparisons, visit the Ajaxian article

Finally:
Jquery and prototype are both great. For me, i prefer JQuery since it's approach appeals to me more than Prototype's, Although prototype is kinda Rubish and has inbound support from Rails, JQuery is still cleaner to me.
Did someone said JQuery to Rails integration?

Routing List

i have seen someone doing this somewhere and i can't remember where. i personally didn't find any use to it, but, you know... someone will.

listing all your routes.

  1. ActionController::Routing::Routes.routes.each do |r|
  2. puts r
  3. end

The Boolean connection

Few people understand the true mentality of dealing with a Boolean variable.
The normal programmer will panic, and immediately attempt to compare it to a Boolean constant.

when using Rails, This is wrong.

When migrating a boolean typed column using Rails, the actual column type created is "tinyint(1)" (a single digit number presentation which means that the actual value being saved is 0's or 1's.
Where is the problem? in Ruby for a change.
In Ruby, everything except nil and false is considered to a true value. In C, Python and many other languages, 0 and possibly other values, such as empty lists, are considered as false.

which brings us to the inevitable conclusion, that simplay comparing boolean values to true or false will not do.

Rails solves this tiny issue for us, for each boolean attribute, Rails implements a "query method" as i prefer to call them. These query methods are simply called by issuing the boolean attribute name with a "?" suffix.

for example, the @mail_message instance object has a is_important boolean attribute, so instead of doing:


@mail_message.is_important == true

or whatever, we can simply ask rails by:

@mail_message.is_important?


beautiful... isn't it?


The Web Ask eizesus.com

Subscribe

    follow me on Twitter

    Twiters Around

    About Me

    My photo
    I am a web developer for more than 9 years, managed, cried, coded, designed and made money in this industry. now trying to do it again.

    Labels