Second RubyConf in Uruguay – 11th and 12th November

Posted by Gabriela Isnardi on November 01, 2011

We are sponsoring one of the greatest technology events here in Uruguay. The Second RubyConf taking place within less than two weeks, the 11th and 12th November 2011, where many IT experts from all over the world get together in order to be immersed in this dynamic world and and up to date get with the latest trends of Ruby and Agile methodologies.

RubyConf Uruguay 2011

We are hungry for knowledge and refreshment, and we all want to be on the same train.

Please welcome all the new members to this awesome community. And help spreading the news, but even more important, do not miss the opportunity to meet the experts, discuss the future of RoR, and be Rail!

 

If you are going to San Francisco…Be sure to wear Moove-IT shirt…

Posted by Gabriela Isnardi on August 31, 2011

We have been to the top 10 places to visit in the US. From a business perspective, Silicon Valley is the place to go. We share the same passion as the area of the world’s largest technology corporations and high-tech firms: Great Ruby on Rails design & development work. Outsourcing has never been so much fun here in Uruguay. And now our Schools friends are wearing Moove-IT shirts, so we are virtually present—though also planning to re- meet in the flesh soon…

Thanks to Howard Kao, Lane Lillquist, Michael Staton, Nick Punt, and Daniel Jabbour from Inigral!

 

 

From South America with love, working offshore

 

Four members of Moove-iT took part in the Rally on Rails and made @buscandotanatos

Posted by Martin Cabrera on August 15, 2011

Last weekend four members of moove-it took part in the rally on rails (www.rallyonrails.com).

Rally on Rails is a competition to make a Web app from scratch in 48 hours ! Obviously this project/game/etc had to be made in rails !

Our team created www.buscandoatanatos.com a game about the search for “Tánatos” (the leader of Sotirias … a secret organization). Based on Google street view , rails, and a lot of gems.

Here go some pictures of this weekend …

Cast your vote from 18 to 20 of August … www.rallyonrails.com

 

 

Ruby + Rails + Agile – sharing presentations

Posted by Martin Cabrera on July 09, 2011

The last Wednesday we made a workshop in the ORT University.
Pablo Ifran, Gianfranco Zas, Ariel Ludueña and I

We share the presentations to everybody

All_in_One_Agile_Development (in spanish)

Ruby_and_Rails (in spanish)

From Silicon Valley to Moove-IT 1

Posted by Gabriela Isnardi on February 17, 2011

We are doing a good job, that’s right, but Michael Staton and Howard Kao from Inigral did not exactly decide to move to Uruguay and work from here now on, they just paid us a one week visit, and worked with us like any other member of the Moove-iT team. The Schools project is exciting itself, but having Howard and Michael here made us feel it even closer, and the boundaries between Inigral and Moove-iT were sort of a blur, for good.

Correct me if I am wrong, but I am really positive we have made them feel at home.

We worked for a week straight, but we also had time to have fun.
No doubts about it, having visitors from around the globe is always refreshing and truly motivating…

Let me tell you why.

We conduct daily meeting with clients from different countries. Most of the times we use skype, and we are about 4 or 5 people in the same room, talking in English, though our primary language is Spanish. On the other end, there is a person whose native language is generally English, but who is normally thousands of miles away, many Fahrenheits apart and only a few hours ahead or behind us. We rarely use a camera, so we do not even know what the room he or she is in looks like.

I believe that the third dimension is definitely more important than we might think. And being in the same room with someone whose voice is extremely familiar to us, and has been part of our work lives for over an year, but whose looks, posture or gestures we used to have little or no idea about is just fantastic. We shared this sort of energy and connection you could only generate when meeting in person.

The truth is we all love to put a name to a face.

And this time we had two new faces to look at, to talk to and to laugh with. In the flesh we met Michael and Howard.

THANK YOU!

Sass why is useful

Posted by Pablo Ifran on November 26, 2010

Sass is used for generating css files based on his own syntax, it’s very useful because allows you to avoid repeating code across the different scss files using import (allows you to import code from other scss file), or mixins(scss functions). Also, allows you to write varibles, for using in different scss, this makes easier to do different templates based on colors or images for example.

_sprites.scss

@mixin sprite_for($image_class, $x, $y, $image: "/images/sprite_image.png") {
  .sprite_image.#{$image_class} {
    background: transparent url($image) no-repeat scroll $x $y;
    height:16px;
    width:16px;
  }
}
_images.scss
$my_sprite_image_path: "/images/my_sprite_image_path.png";

default.scss

@import "sprites", "images";

@include sprite_for("my_image", 0, 0, $my_sprite_image_path);

That generates

default.css

  .sprite_image.my_image {
    background: transparent url(/images/my_sprite_image_path.png) no-repeat scroll 0 0;
    height:16px;
    width:16px;
  }

So, this is best sorted using this method, because you have the image path in a single file and you use it in other files only by importing the file with the images path, it’s also simpler to remove an image because you only need to find the references to that variable and delete them.

The sass framework also allows you to use the DRY principle because you can write nested selector, I’ll show you with an example:

default.scss

.some_class {
  width: 100px;
  .some_other_class {
    display: block;
  }
}

default.css

.some_class {width:100px;}
.some_class .some_other_class {display:block;}

Doesn’t affect the performance because it generates a css file at development time.

It also allows you to benefit from some of the advantages of css 3 right now.

Juggernaut: Chat on Rails

Posted by ivan.etchart on November 19, 2010

To implement chat on Rails we need the Juggernaut gem. The newest version of Juggernaut is build upon nodeJS.
1. Install Juggernaut:
First, install nodejs (http://nodejs.org), redis (http:/code.google.com/p/redis/) and Juggernaut gem (gem install juggernaut).
Then download server git clone …
2. Integrate with Rails to implement chat!
After Juggernaut gem is installed, add it to environment.rb:
config.gem "juggernaut"
Suppose you have a system with user authentication, the idea is to generate an environment where you’re able to chat with other users and see to what extent features can be added in order to create an awesome chat!
Note: Providing a step by step guide to create a working chat isn’t the idea of this tutorial. It’s to show different possibilites to develop on
Juggernaut.

Connecting to Juggernaut from Rails

It’s necessary to add the file WebSocketMain.swf to the public folder. This hasn’t to be exactly this way, you can change its location, but if you do, then you’ll have to change the WEB_SOCKET_SWF_LOCATION, due to an issue with Firefox (… for further information visit juggernaut git page).
Juggernaut serves every file necessary for running by default, so you can leave them on the server where Jaggernaut is installed and configure everything in your client (mainly due to Firefox) in order to avoid adding extra files to your project.
Add to your view this line:
<script src="http://localhost:8080/application.js" type="text/javascript" charset="utf-8"></script>
Note : you can add this file in another way or eventually add it to your project if you want.
Inside another script tag:

var jugger = new Juggernaut;
** Connection events provided by Juggernaut
Juggernaut provides you with three different events : Connect, Disconnect o Reconnect.
jugger.on("connect - disconnect - reconnect", callback)
You can use this events to implement whatever function you want to execute, i.e. alerting when a client has connected:
jug.on("connect", function() {alert("I'm connected!!");});
At this point you have the connection of your client ready, you can test it, you have to start Juggernaut. * First run redis :
./redis-server redis.conf

(whereever you have installed it) *

Then go to the folder where you’ve downloaded the server to and run juggernaut:
node server.js
Let’s chat!
Now that we have everything going, would be a good time to start chatting.
First you need to subscribe to a channe. Inside the channel you’ll be able to connect and user messages scope is restricted to channel.
Then :
 jug.subscribe("name_or_channel_id", function(data) { .. here you'll handle all messages coming from channel ... })
Clarifying a bit… with this function we subscribe to the channel and can pass a function as a parameter to handle data coming from it, i.e. any user’s messages, let’s give an example:
First you need to have a div tag with an id (id_div), what you want is to append a list element containing message content to the div element everytime someone sends a message.
jug.subscribe("name_or_channel_id", function(data){
var li = $("<li />");
li.text(data);
$("#id_div").append(li);
});
You can have a div or textearea element, adding text to a textarea element is relatively simpler, it’s enough to do

textarea.value += (data + "\n");

but you’ll lose customizing power. li elements can be enriched with style, making the chat more attractive.

You’ve received data and added to a div element, but you’re still unable to send data. Let’s setup a form:
<% form_remote_tag(:url => path_to_send_message_method, :success => "$('#msg_body').value=''" do >
<= text_field_tag 'msg_body', '', :size => '50' >
<= submit_tag 'Send Message' >
<% end %>
And the method :
def send_message
Juggernaut.publish("name_or_channel_id", parse_chat_message(params[:msg_body], current_user))
end
parse_chat_message? … Yes, before publishing data, you can process it and why not modify it a bit.
def parse_chat_message(msg, user)
return "#{user.login} says: #{msg}"
end
We are sending information to Juggernaut with this format : ‘usuario says: something’
Done!, you have your server up and running, and know how to send and receive data, there’s nothing else to try.
Extras:
Private chat case :*

You can’t call a chat a chat if you can’t have a private conversation with someone. A good way of implementing this, is subscribing your users to a particular chatroom identified by user’s id. Simple add another subscribe:
 jug.subscribe("name_or_channel_id", function(data){ .. handle private message .. }
The receiving user must be able to subscribe to your chat and send messages to you.
To achive that, you should write a function that when you click on the user you want to send a private message to, subscribes to its chatroom and allows you to send messages to the user. This can be implemented in many different ways! You’ll have to simply make your choice according to your needs!

Rails security

Posted by Pablo Ifran on October 14, 2010

When you are working with svn (pulling your project from the svn to the web server) and you want to deploy a system into production with apache (mod_rails), you must filter the svn folders (to prevent that other users view your svn files).

To do that task, you must add the following lines to the apache configuration.


<DirectoryMatch "^/.*/\.svn/">
  ErrorDocument 403 /404.html
  Order allow,deny
  Deny from all
  Satisfy All
</DirectoryMatch>

blahsports & marketing campaign of Maradona

Posted by Martin Cabrera on June 22, 2010

Currently we are the developing team of blahsports. Since January 2010 we have been developing several new functionalities and administrating the whole Site.

Blahsportswww.blahsports.com

Blahsports is a social content website. As a user, you participate in determining all site’s content by providing, selecting, sharing, and discussing articles, pictures and videos that you like and feel that would be interesting to other people.

see the site …

blahsports_site

Blah and technology

This project is based on PHP, codeigniter (www.codeigniter.com), Python and MYSQL.
It uses RSS and Web crowller application developed in Python to share all the sports content of a hundred sites.
We create a tag module which searches and identifies the language, sports and a set of tags for each content. For instance, if the content is “Forlan plays very well against Mexico” then the module will find out that the text is about Soccer, Forlan, Mexico and that the main language is English.

blah and a marketing campaign

We are making a marketing campaign to acquire and activate users.  We have a Maradona t-shirt as a prize for the winner among all the registered users … see the site … http://maradona.blahsports.com

This application was developed based on rails.

promo_maradona

Rails & iPhone Applications: Simple Mix

Posted by Augusto Guido on October 09, 2009

As Rails developers we are all in love with keeping things simple. As Einstein said: “Make everything as simple as possible, but not simpler”. You may not agree with the theory of relativity, but you should really agree on this one.


A couple of months ago I started my final major project: an iPhone based application. It’s been a really great journey so far and I’ve learned so many amazing things about iPhone development. I found it very similar in some ways with Rails, being the biggest one the way they both keep things as simple as they should be. Well they both use the MVC architecture, but right now I’m talking beyond that stuff. It’s more about an ideology on how to build stuff, web and mobile applications in this case.

As an idea here at moove-it we thought of having an iPhone application for our faltauno.com project, kinda like facebook does. So the research began on how this could be done, the first (and probably definitely) answer appeared quickly. The guys at iphoneonrails.com have developed ObjectiveResource.

“ObjectiveResource is an Objective-C port of Ruby on Rails’ ActiveResource. It provides a way to serialize objects to and from Rails’ standard RESTful web-services (via XML or JSON) and handles much of the complexity involved with invoking web-services of any language from the iPhone.”. What’s not to love in that sentence? I won’t get into it since I haven’t used that much, and who could explain better than themselves?. In case you are thinking it will be too complex to get started, you can download the whole package with an example application that does all the basic stuff you are probably thinking on trying to do right now.

The example is a typical Rails application that can be handled using an iPhone application, which is also inside the example, you should of course have installed XCode. You then start the rails app and the iPhone simulator running the other one, and something kind of magic starts happening. What amaze me the most is the simplicity of the code you’ll need to write (of course :) ). Really try it out it’s worth it.


Don’t forget to tell us about your experience!