Lições da Room to Read sobre Desenvolvimento no Terceiro Setor

20, novembro, 2009 kaleu Sem comentários

book_scrumComentei em um texto anterior minha admiração por John Wood, um alto executivo da Microsoft que largou a carreira para construir escolas e bibliotecas no Nepal. Em seu livro conta histórias e oferece algumas lições valiosíssimas, e estas, quero compartilhar com vocês.

Apresente Resultados

A Microsoft (principalmente Steve Ballmer) ajudou John a sempre se manter focado em resultados e números. Cedo ele percebeu que mostrar claramente para as pessoas o que era feito com o dinheiro doado as motivava a doar mais e a contar aos amigos sobre o projeto.

A Room to Read criou boletins trimestrais e listas de e-mail para informar constantemente aos doadores e interessados o que acontecia com o dinheiro recebido, além de reduzir ao máximo os custos com burocracia e tornar todo o processo transparente aos doadores.

Pensar Grande

Quando John ajudou a realizar a primeira biblioteca no Nepal ele pensou em todas as crianças que precisavam de bibliotecas e se perguntou por que não estender o projeto para outros países. Pensar grande foi o ponto de partida para que ele pudesse traçar planos ambiciosos e trazer para junto de si pessoas que também queriam realizar grandes coisas.

Com metas altas também pode ser mais fácil atrair grandes investidores e a atenção da mídia.

Foco na Arrecadação de Verbas

John sempre soube que haviam muitas organizações filantrópicas, muitas idéias e projetos excelentes. Mas o que ele tinha como grande diferencial era a certeza que precisaria de muitos recursos para desenvolver os projetos que vislumbrava. Não adiantava ter boas idéias e trabalhar por uma causa sem antes se preocupar com a captação de recursos. Esse diferencial ajudou a Room to Read a crescer vertiginosamente logo nos primeiros dois anos e a construir mais de 290 escolas em poucos anos.

Permita que as pessoas sejam também “donas” do Projeto

Construir uma escola no Nepal custava em torno de 8.000 dólares. Esse valor permitia que muitos doadores patrocinassem escolas inteiras e dessem seus nomes a elas como forma de homenagear seus pais ou amigos. John lhes enviava fotos e contava histórias que permitiam aos doadores se sentirem parte do projeto. Outra grande força do modelo da Room to Read é a rede de voluntários que criava-se espontaneamente, sendo necessário apenas vontade e que as pessoas estivessem verdadeiramente de acordo com a filosofia e objetivos da ONG. Sem dúvida esse trabalho fazia com que os voluntários se sentissem altamente envolvidos, afinal, não eram controlados, estavam alí para poder exercer todo o seu potencial humano.

A comunidade precisa se sentir responsável

Muitas das escolas desenvolvidas pelo Room to Road tiveram mão de obra dos próprios moradores dos locais aonde eram construídas. Uma dessas escolas foi construída com a doação de 183 famílias da região, cada uma no valor equivalente a 5 dólares. Essa participação faz com que os projetos continuem rendendo frutos no médio e longo prazo pois a comunidade participa, apóia e continuará trabalhando para melhorar o que já existe.

Uma das histórias que mais me emocionou foi uma menina de 8 anos que arrecadou fundos junto aos familiares e amigos para a contrução de uma escola no Nepal. Após isso, ela desejou continuar fazendo ainda mais e organizou uma rifa para que arrecadasse o suficiente para construir outra escola.

Categories: ONG's Tags: ,

John Wood – Saí da Microsoft para Mudar o Mundo

20, novembro, 2009 kaleu Sem comentários

SAI_DA_MICROSOFT_PARA_MUDAR_O_MUNDOA História de John Wood tem me impressionado, um homem que larga uma carreira bem sucedida para construir escolas no Nepal e que dedica toda a sua vida a esta missão merece muito respeito. Porém, ainda mais impressionante é como milhares de pessoas ao redor do mundo trabalharam para que a Room to Read pudesse construir mais de 700 escolas em países como Nepal e Sri Lanka.

Além das escolas, a Room to Read financia os estudos de 6.800 meninas, já construi mais de 7.000 bibliotecas, publicou mais de 300 livros em linguagem local e já tem muitos outros projetos em andamento.

Da mesma forma que este projeto e este grande homem tem me motivado e inspirado, espero que motive você também. Abaixo, fiz uma tradução livre da missão da Room to Read que espero, traga em todos que chegaram até aqui a vontade de também ir em busca do que podem fazer para ajudar a tornar este mundo um lugar ainda melhor.

Missão da Room to Read

Nós participamos com comunidades locais do começo ao fim para desenvolver um mundo que possibilite oportunidades educacionais de qualidade através de bibliotecas, literatura em linguagem local, construção de escolas e bolsas de estudos para meninas. Nós buscamos intervir cedo na vida das crianças com a crença de que a educação empodera as pessoas a melhorar as condições sócio-econômicas de suas famílias, comunidades, países e gerações futuras. Através das oportunidades que apenas a educação pode oferecer, nós nos esforçamos para quebrar o ciclo de pobreza, uma criança por vez.

Categories: ONG's Tags:

Desenvolvendo Plugins para o ExtJS

10, novembro, 2009 kaleu Sem comentários

Uma das formas que podemos usar para adicionar funcionalidades a componentes do ExtJS é pelo uso de plugins.

Um Plugin no ExtJS 2.3 é uma classe contendo um método “init” que será chamado logo após a inicialização do componente.

Exemplo de Plugin:

//Exibe um alerta com o ID do componente Plugado
PluginAlert = function() {
    return{
        //Função executada após o "initComponent"
        init: function(cmp){
            alert('Plugin Executado para componente '+cmp.getId())
        }
    }
};

Para usar um plugin, basta instanciá-lo como um ítem do array do atributo de configuração “plugins”.

Exemplo:

new Ext.Panel({
            plugins: [
                new PluginAlert()
            ],
            title: "Exemplo do Plugin de Alerta"
        })

Simples não?
Cabe apenas ao desenvolvedor encontrar formas criativas de trabalhar com o uso de plugins. A melhor forma que encontrei foi utilizá-los combinado ao uso de eventos dos componentes.

Abaixo segue outro exemplo de plugin que atualiza um painel a partir do conteúdo html de uma requisição AJAX:

// create namespace for plugins
Ext.namespace('Ext.ux');
 
/**
 * Ext.ux.PluginPanelUpdater Plugin para Ext.Panel
 * Atualiza HTML de um painel a partir de uma requisição AJAX.
 * @author  Kaléu Caminha
 * @date    10 de Novembro, 2008
 *
 * @class Ext.ux.PluginPanelUpdater
 * @extends Ext.util.Observable
 */
//Construtor
Ext.ux.PluginPanelUpdater = function(config) {
    Ext.apply(this, config);
};
 
//Código do Plugin
Ext.extend(Ext.ux.PluginPanelUpdater, Ext.util.Observable, {
    /**
     * A Função init é executada para todos os plugins após o "initComponent" do componente no qual o plugin é utilizado.
     */
    init: function(panel){
        //Adicionamos evento para quando o painel for renderizado
        panel.on("render", this.updatePanel, this);
        this.panel = panel;
    },
    /**
     * Usa um Updater para atualizar o html de um painel
     */
    updatePanel: function(){
        //Pega Elemeneto
        var el = this.panel.getEl();
 
        //Se frame == true, adiciona conteúdo ao elemento body interno
        if(el.child('.x-panel-body'))
            el = el.child('.x-panel-body');
 
        //Pega updater e realiza chamada do método update
        el.getUpdater().update({
            url: this.url,
            params: this.parms || {}
        });
    }
});

Este tutorial foi baseado no tutorial oficial do ExtJS sobre desenvolvimento de Plugins.

Update 12 de Novembro de 2009
Foi publicado ontem um artigo no blog oficial do Ext sobre o desenvolvimento de plugins, ressaltando a importância de seguir um padrão para que outros desenvolvedores possam extender as funcionalidades criadas por você. Ótima continuação para este post. ;)

Categories: ExtJS Tags:

Organizando Arquivos JavaScript

10, novembro, 2009 kaleu Sem comentários

Em Javascript existem 5 tipos básicos de funções que provavelmente você já se deparou, ou, com a popularização de interfaces ricas em javascript, irá se depararem em algum momento. São elas:

  • Requisições AJAX: Sejam elas através de frameworks ou pelos objetos default dos browsers;
  • Callbacks de Requisições: Toda requisição deverá estar associada a pelo menos uma função de callback responsável por exibir o resultado da requisição, seja ele um erro, um aviso de sucesso ou a exibição de novas informações na interface;
  • Tratamento de DOM: Para que qualquer informação seja exibida ao usuário (com exceção de prompts como ‘alert()’) o HTML e o CSS da página deverão ser alterados. Esta classe de funções inclui a alteração de classes, estilos, conteúdo texto e novos atributos HTML;
  • Instanciação de Eventos: Para que interfaces ricas funcionem adequadamente, estas deverão receber comandos (ou eventos) a partir da interação do usuário, porém, em algum momento você terá que registrar estas ações aos elementos HTML correspondentes;
  • Tratamento de Eventos: Gosto de chamar esta classe de funções de “Actions”, que asism como no modelo MVC, recebem interações do usuário com a interface.

Ter esta separação dos tipos de atividades em JavaScript foi essencial para organizar os arquivos de classes e orientar o planejamento da arquitetura de software utilizada.

JavaScript é difícil de debugar, portanto é importante que se tenham padrões de programação e arquitetura bem definidos.

Categories: Javascript Tags: ,

Observações sobre o Desenvolvimento de Componentes para o ExtJS.

10, novembro, 2009 kaleu Sem comentários

Após várias tentativas e algumas experiências bem sucedidas decidi documentar o processo de desenvolvimento conceitual de um componente, o que ele faz, como faz, o que é configurável, etc.

Meu desejo é conversar com a comunidade e propor o desenvolvimento de um manual que auxilie novos desenvolvedores a entenderem não apenas os códigos, mas também o processo de planejamento de uma interface e de desenvolvimento orientado a componentes.

O Todo

Um componente é sempre visto pelo usuário como um “pedaço” ou um “recurso” de interface (em outra linguagem, um quadrado que exibe alguma informação que ele precisa) com a qual ele irá interagir para obter ou inserir alguma informação.

A Informação

Antes de iniciar o desenvolvimento é importante ter em mente quais as informações essenciais que deverão ser exibidas pelo componente e sua ordem de importância. Ter essa visão clara evita desperdício de tempo com retrabalho.

Captura de Eventos

Para que seja exibida a informação correta será preciso interagir com o usuário, o que em interface é comumente feito com o uso de eventos. Existem diversos eventos de interface, teclado, clicks e movimentos do mouse, etc.

As Partes

Para iniciar é preciso separarmos os diversas recursos envolvidos na criação de um componente.

  • Ações Públicas: Podem também serem vistas como os casos de uso de um componente, é importante definir a informação de entrada e de saída de uma determinada ação.
  • Atributos públicos: Tudo que poderá ser acessado e alterado pelo usuário em tempo de execução.
  • Atributos de configuração: Atributos que podem ser indicados na inicialização de um componente.
  • Eventos: A forma com mais baixo acoplamento para comunicação de componentes de interface é feita por eventos.

Documentando

Documentar é uma das tarefas mais postergradas no desenvolvimento de software. É possível adquirir uma cultura de programação que torna o trabalho de documentação menos custoso, como por exemplo o uso de annotations, a separação dos métodos da classe por grupo de funcionalidades semelhantes e comentários nos métodos e atributos.

É importante que quem for utilizar o componente tenha claro o uso das quatro partes colocadas acima: “atributos públicos”, “atributos de configuração”, “métodos públicos” e “eventos”.

Além disso, uma descrição de um parágrafo sobre o componente, um print screen dele em funcionamento e um exemplo de caso de uso irão facilitar o trabalho de quem precisa descobrir se um componente é ou não adequado ao seu trabalho.

Conclusão

Estas são apenas algumas observações referentes ao que tenho desenvolvido.

Acredito que a falta de atenção aos ítens colocados aqui podem fazer com que uma empresa julgue o ExtJS (e o uso de interfaces ricas) como “uma péssima ferramenta” quando na verdade o que faltou foi uma mudança de cultura e talvez tempo de treinamento nas novas formas de programar.

Ótimos exemplos de componentes bem documentados podem ser encontrados no site oficial, na área destinada a comunidade.

E você, como é a sua experiência no desenvolvimento de componentes para o ExtJS?

Categories: ExtJS, Javascript Tags:

Análise do uso do Ext Js pelo Tine 2.0

23, setembro, 2009 kaleu Sem comentários

O Tine 2.0 é um sistema de groupware em plataforma web que utiliza o framework Ext JS como base de toda a interface. O sistema possui gerenciador de contatos, tarefas, calendário, etc.

Tini 2.0

Como minha principal atividade hoje é o desenvolvimento de interfaces com Ext JS decidi fazer uma análise de alguns dos fatores que me chamaram a atenção e que podem ser importantes para projetos futuros.

Fiquem a vontade para acrescentar suas próprias impressõessobre este software e sobre desenvolvimento de aplicações web ricas.

Leia mais…

Categories: ExtJS, Javascript Tags:

Br Office Para Leigos

25, agosto, 2009 kaleu 2 comentários

Sempre que posso indico o Br Office como suíte de escritório. É grátis, código aberto, de excelente qualidade e com uma comunidade fabulosa no Brasil.

Porém, as vezes falta algo mais, algum material que possa ajudar o pessoal a usar melhor todas as ferramentas e recursos desta suíte.

Por isso adorei e já estou linkando aqui o blog do Klaibson, Br Office Para Leigos. O Blog é de altíssima qualidade e o Klaibson, um membro bastante ativo da comunidade, tem muita credibilidade para falar sobre este tema.

Espero que ajude. ;)

Categories: Link, Mundo Livre Tags: ,

Tradução Inglês/Português em Florianópolis

25, agosto, 2009 kaleu Sem comentários

Quero disponibilizar nessa página o contato de uma pessoa fantástica que participa do projeto obafloripa e que também trabalha com tradução de textos inglês / português. Com certeza é uma pessoa de grande confiança e que também já trabalhou como professora de linguas na UNISINUS.

O nome dela é Hanna Betina Götz.

Serviços

  • Tradução de resumos e abstracts;
  • Revisão de textos;
  • Reforço escolar;
  • Gramática;
  • Conversação;
  • Português para estrangeiros;
  • Português para hispanohablantes.

Localização:
Florianópolis, Santa Catarina.

Contato
Telefone: (48) 3334-2401
E-mail: hannagotz@yahoo.com.br

Categories: Serviços Tags:

TCC: PSI e Vigilância Sanitária.

24, agosto, 2009 kaleu Sem comentários

Já tratei aqui no blog sobre o início do meu trabalho de TCC e meu objetivo atual: a escolha do tema.

Já tenho muito forte a intenção de realizar um PSI (Planejamento de Sistemas de Informação) para qualquer instituição pública, como uma escola, ONG’s ou prefeituras, e neste final de semana tive a oportunidade de abrir minha visão para um departamento de qualquer prefeitura extremamente importante, porém, pouco percebido. A Vigilância Sanitária.

Leia mais…

Categories: TCC Tags: , ,

Refinando o TCC: Questões para a Escolha do Tema

19, agosto, 2009 Kaléu Caminha Sem comentários

Neste artigo trabalho a minha intenção em desenvolver como TCC um PSI (Planejamento de Sistemas de Informação) para instituições de área pública ou terceiro setor como escolas públicas, ONG’s ou outras organizações públicas (bombeiros, prefeituras, centro de zoonoses, etc).

Com a ajuda do colega de trabalho (e chefe) Eduardo Luz fiz algumas observações sobre pontos importantes a considerar antes de escolher o perfil da instituição a ser pesquisada.

Leia mais…