CAMARAFREE PROJECT

After a meeting with @sircookieface we knew that something would happen. We discussed about people, jobs, css, sass, animation, etc, but a lot of common values starting to appear in our conversation about how to work collaboratively.

A month later @sircookieface started Camarafree project, with the idea to make a freelance work force that could win the battle against any other company even big ones like Globant, Accenture, etc.

I had some similar idea in mind, so started helping him to build this project.

The game started, a lot of things to think and define and more than 100 people want to participate.

I always wanted to change the world, this is gonna happen ….

More info soon

El 19 de Octubre comienzo a dictar un curso intensivo de Ruby on Rails en Montevideo a través de la empresa Cubox S.A. Aquí les dejo la información sobre el curso:

Estamos organizando un curso intensivo de desarrollo de web ágil con Ruby on Rails en Montevideo del 19 al 30 de octubre. El instructor es Pedro Visintín quien tiene mucha experiencia dando cursos de Rails en Argentina, Chile, y Costa Rica.

Quiénes somos?

Cubox S.A. es una empresa de desarrollo basado en Ruby on Rails trabajando desde la oficina de CoworkingMVD, aquí en Montevideo. Somos socios de ENTP, la primer empresa de consultoría en Ruby on Rails y software libre en el mundo, según dice el sitio de http://railsrankings.com/

El curso es abierto para cualquier interesado o interesada en aprender sobre el desarrollo ágil con Ruby on Rails, pero también estamos buscando nuevos candidatos para nuestro equipo. Así que si tenés interés en trabajar con nosotros, este curso es una buena forma de entrar en contacto y conocernos.

El objetivo de este curso es capacitar en el uso del framework con las mejores prácticas y buenas costumbres, aplicando metodologías ágiles como extreme programming y BDD. Es ideal para quien ya desarrolla aplicaciones web en alguna otra plataforma y quiere empezar a desarrollar aplicaciones con Ruby on Rails. Se cubrirán los aspectos más importantes del framework donde normalmente quien es nuevo se enfrenta a difíciles decisiones, falta de documentación y termina resolviendo por prueba y error. Durante el curso se desarrollará una aplicación web de prueba utilizando Git como sistema de control de versiones.

La duración del curso será de 10 días de 3.5 horas cada día, con un break de 30 min. El curso es altamente intensivo, no hay tiempo ni para tomar mate ;-) Para que pueda asistir la gente que trabaja durante el día, el curso se dictará de 18 a 21:30 hs.

Costo: $1500 + IVA

Las interesadas o interesados deben escribir un email a cubox.curso@gmail.com

Temario:

Día 1

  • Theory
  • MVC and the Web Development Problems
  • Rails origin and Agile Web Development
  • XP: what is and what is not
  • Why you should write tests

Día 2

  • Environments and Development Environment
  • Rails framework and components, high level view
  • about the components and what solves each.
  • Rails skeleton
  • Git for source control
  • The console and log

Día 3

  • Building the app: Address Book
  • Design the app based on Wireframes
  • Thinking the app with REST
  • Generators
  • Write the first controller
  • Writing html
  • Writing erb

Día 4

  • What is a Resource?
  • Everything is a resource!
  • The Controller and routes
  • Working with routes

Día 5

  • Writing the specs for models
  • Model and Migrations
  • Rake tasks
  • First complete MVC cycle

Día 6

  • Adding complexity
  • STI and Has Many Through
  • Ruby Open Classes, mixins
  • Scopes
  • Validations Callbacks

Día 7

  • Improving the View with erb
  • Partials, layouts, content_for
  • Integration tests, webrat

Día 8

  • Rendering the Address Book
  • Putting it all together
  • Adding authentication plugin
  • Debugging

Día 9

  • Build an api with metal

Día 10

  • Deploy

El curso estará a cargo de Pedro Visintín que cuenta con varios años de experiencia en el tema:

  • Presentación Rails para Todos en Software Freedom Day 09 Septiembre 2009
  • Organizador de Reunión Rails Argentina Noviembre 2008
  • Orador en Webprendedor. Mini workshop Ruby on Rails Santiago de Chile. Marzo 2008
  • Workshop Rails en Avantica. San José. Costa Rica Febrero 2008
  • Video “Rails cuesta menos” para Cafeconf Octubre 2007
  • Creación del evento Rails PizzaConf en Santiago de Chile presentando BDD con RSpec Noviembre 2007
  • Presentación de REST a Arquitectos de Microsoft Argentina Julio 2007
  • Workshop Rails en Avantica. San José. Costa Rica Abril 2007
  • Presentación de Rails a los Arquitectos de Microsoft Argentina Marzo 2007
  • Presentación “Ruby on Rails apto para todo Público”, en Costa Rica Technology Insight 2007.

I will present Ruby on Rails framework at Software Freedom Day 09 at Buenos Aires.

The speak will focus on explain the most important things of the framework for people that do not know the framework yet.

I will speak spanish and probably all of the speaks will be spanish.

This is the tentative schedule:

General:

9:30: Ingreso y registración.

Sala A:

10:00: Apertura del Software Freedom Day 2009, Hernán Saltiel
10:30: Python en Educación, Diego Cañizares.
11:30: Software Libre, Diego Cañizares.
12:30: Crossbow, Hernán Saltiel.
13:30: Break.
14:30: OpenStorage, Pablo Oddera y Gabriel Benselum.
15:30: Intro a OpenSolaris, Juan Daniel Pérez.
16:30: Cierre del evento.

Sala B:

10:30: Ruby on Rails, Pedro Visintin
11:30: Trabajando con software libre, EDS.
12:30: Instalación de OpenSolaris en VirtualBox, Paola Gutiérrez.
13:30: Break.
14:30: Gleducar, María Eugenia Núñez.
15:30: Taller de Crossbow, Hernán Saltiel.

Sala C:

A Instalar, que se acaba el mundo!!!

See you there!

PRESENTING AUTHLOUNGE

(no more maintained, sorry)

Working on a new awesome project I decide to start using CouchDB to persist data. Also I found the Authlogic rails gem/plugin really well done and very flexible.

To connect to CouchDB I forked Couchrest that allow to save objects in couchdb from Rails.

Basically the challenge was to remove ActiveRecord dependencies and glue to Couchrest. I found some features and shortcuts that ActiveRecord has that wasn’t available at Couchrest that I believe are useful like property_names (similar to column_names in ActiveRecord), the uniqueness validator and the _changed? method with the changed_properties hash.

I added those shortcuts and features to couchrest and reconnect every point that persist data to couchrest.

I have to keep out the authenticates_many and the scope feature due that they are based on ActiveRecord.

This is experimental for now.

Which are the differences?

First at all you can remove ActiveRecord from your environment.rb.

As read in the environment.rb comment: Skip frameworks you’re not going to use. To use Rails without a database relational database, you must remove the Active Record framework.

  config.frameworks -= [ :active_record]

Here is an example how your User model should be:

class User < CouchRest::ExtendedDocument
  include CouchRest::Validation
  include CouchRest::Callbacks

  use_database SERVER.default_database

  property :login                   # optional, you can use email instead, or both
  property :email                   # optional, you can use login instead, or both
  property :crypted_password        # optional, see below
  property :password_salt           # optional, but highly recommended
  property :persistence_token       # required
  property :single_access_token     # optional, see Authlogic::Session::Params
  property :perishable_token        # optional, see Authlogic::Session::Perishability

  # Magic columns, just like ActiveRecord's created_at and updated_at. These are automatically maintained by Authlogic if they are present.
  property :login_count, :type => Integer           # optional, see Authlogic::Session::MagicColumns
  property :failed_login_count, :type => Integer    # optional, see Authlogic::Session::MagicColumns
  property :last_request_at, :cast_as => 'Time'       # optional, see Authlogic::Session::MagicColumns
  property :current_login_at, :cast_as => 'Time'      # optional, see Authlogic::Session::MagicColumns
  property :last_login_at, :cast_as => 'Time'         # optional, see Authlogic::Session::MagicColumns
  property :current_login_ip       # optional, see Authlogic::Session::MagicColumns
  property :last_login_ip        # optional, see Authlogic::Session::MagicColumns

  timestamps!

  def self.default_timezone
    :utc
  end

  acts_as_authentic

end

No changes on controllers.

I will continue working on this, making oauth and openid work too. (I didn’t see if some changes are necessary yet)

Thanks

Foto Francisca Ulloa.

Focusing on user experience improvements on this site, a friend shown me that the phone couldn’t be copied to clipboard due that it was shown on the tooltip window, so I saw basically two options: 1) add the classic contact page 2) leave the tooltip opened for a while. I’m not a conformist and I saw a third option: leave the UI intact and add the copy to clipboard functionality :-)

First, I looked for existent solutions in MooTools, I found the David Walsh MooTool’s developer solution but it doesn’t work for me. So researching about working solutions I found the ZeroClipboard plugin, just JavaScript, and then I found the jQuery implementation of that library.

Now we have the ZeroClipboard implemented with MooTools

Enjoy

Foto Francisca Ulloa.

During my many years of development using Java, .NET, vb, etc., the “recommended” way of storing data was always through a “Relational Database”

Well, that was great for the most part, but when you start to develop Object Oriented structures, things start to break down. The world is not “table oriented” and real world relations cannot be embedded naturally in “relational databases”.

Every day the Agile world needs flexible data modeling. The developer has to design and optimize data (objects), not the dba (king of tables status quo). How many of us have to explain how an ORM works to a DBA, while the DBA backpedals, not wanting to lose control over his database?

The DBA is only doing his job because of relational database design. The design is the problem, not the DBA.

The web is the clearest example where table oriented design lacks flexibility. You have to practically design and develop with one hand tied behind your back.

These limitations have spurred several people think and create alternatives to this big problem in web development, resulting in the availability of Document Oriented databases like CouchDB and MongoDB

Maybe you’re a diehard relational database developer, but I suggest you “think out of the table” and give these new tools a try.

The new concept of document against table will let you represent richer objects, and design and embed the right things in the right place.

All the data is represented in JSON. That makes our JavaScript code very happy.

The bonus of this new document oriented databases is that they were build from the ground up for web environment, so replication, distribution, and availability is ready right out of the box, and is easy to use.

This is the beginning of a new and powerful way to develop, removing the limitations of structured table designed data.

Actually I’m developing a new project in Rails using CouchDB as the only storage for objects using “CouchRest”. The experience is awesome.

JQUERY VS MOOTOOLS

Algunos que me conocen, saben que me gusta Mootools, pero muchas veces no me da el tiempo de explicar los fundamentos de porqué lo elijo en vez de jQuery.

Hace unas semanas Aaron Newton (@anutron) autor de la excelente biblioteca basada en mootools Clientcide publicó un artículo llamado jQuery vs MooTools

Dado que éste artículo estaba en Ingles y Portugués, decidí hacer la traducción al español. jQuery vs MooTools en Español

Espero lo disfruten.

I was requested to implement Really simply history rsh for a project. I did it but I don’t want more rjs and obstrusive js. I also decided to move from prototype to mootools. Why not jquery?

What is Ajax back button?

It’s simple, go to your gmail and open one email message, that will execute an Ajax call, then press the back button and you’ll get back to index via Ajax. Do you want it?

First at all, I searched about an existing solution in MooTools for ajax back buttons in MooTools and I found that digitarald (one of the best JavaScript developers and MooTools developer) has wrote that plug-in, but sadly it’s old and it doesnt support MooTools version > 1.1

Finally, I decided to update to support the new MooTools version and here is the script updated: HistoryManager updated and working with mootools 1.2

Enjoy, and thanks Digitarald!

© copyright. All rights reserved. Pedro Visintin