LazyWeb: Escolhendo um framework

November 11th, 2009 § 7 comments § permalink

Um amigo de Belo Horizonte me consultou esses dias sobre uma questão fundamental para a aplicação que ele está planejando começar a escrever nos próximos dias: framework de programação usar (e por extensão, qual linguagem)?

Como minha experiência nos últimos tempos tem sido confessadamente restrita a Rails e alguns experimentos em outros, resolvi apelar para a caridade dos meus leitores. Qual framework você usaria para seu próximo projeto?

Esse meu amigo não tem problemas com linguagens de programação em si. De fato, a não ser que seja algo tão esotérico quando Haskell ou Erlang, ele é capaz de se familiarizar com uma linguagem ou framework em alguns dias.

Obviamente, não posso dar muitos detalhes sobre a aplicação, mas dá para dizer que o objetivo é escalar gradualmente. Ela não precisar começar escalando para o mundo inteiro, mas um caminho seria bom. Um outro detalhe nesse aspecto é que a aplicação é comparativamente particionada: um usuário terá acesso a alguns itens e compartilhará esse acesso com algumas dezenas ou centenas de pessoas. Esses itens possuem moldes variáveis e seriam bom ter flexibilidade na criação do mesmos.

Finalmente, hospedagem é uma questão também. Não necessariamente preço, mas facilidade. Linode é uma opção mas preferivelmente algo que possa ser colocado em alguma coisa pequena e ir escalando conforme a necessidade, no estilo do Heroku (o que limitaria a Rails, claro). Python parece uma boa opção, mas ele precisa de evidências.

E aí, alguém anima a ajudar um pobre compadre em armas? 😀

Squeak by Example: O Retorno

August 10th, 2008 § 8 comments § permalink

Depois de deixar o projeto de lado um tempo por causa das outras responsabilidades, estou de volta. Completei mais um capítulo e segundo a nossa planilha de tradução não estamos muito longe de finalizar os capítulos que restam.

Aos interessados, ainda há tempo de ajudar com traduções e revisões. Embora a página do projeto do Gitorious por algum motivo não reflita isso, o meu repositório contém todas atualizações feitas até o momento. Basta cloná-lo e ajudar nas traduções e revisões.

Squeak By Example: Progresso da Tradução

May 13th, 2008 § 3 comments § permalink

O trabalho de tradução do Squeak by Example para português continua indo bem. Considerando o trabalho divido entre tradução e revisão, estamos em 59% do primeiro e 29% do segundo.

Eu acabei de fazer o merge entre todos os clones de tradução e o repositório principal agora está atualizado com todo o trabalho feito até o momento.

Se alguém deseja participar, ainda há espaço para ambas as atividades. Alguns capítulos são bem grandes e podem ser traduzidos simultaneamente e os que já estão traduzidos ou sendo traduzidos precisão de revisão e verificação de estilo e uso de termos.

Só falta agora um wiki ou coisa assim para coordenarmos os detalhes de tradução para que na hora da revisão final seja mais fácil. E toca página para frente. :-)

Eu não…

May 8th, 2008 § 22 comments § permalink

  • Eu não escolheria Rails para escrever uma aplicação Web que consistisse, em sua maior parte, em processamento fora da interface com o usuário, ou cujo maior ponto fosse uma API;

  • Eu não escolheria Django para uma aplicação cujo domínio fosse extremamente complexo, com modelos dinâmicos, tabelas construídas on-the-fly, e funcionalidades similares;

  • Eu não escolheria Seaside para uma aplicação que consistisse em recursos individualizados, independentes e cujo referenciamento fosse essencial;

  • Eu não escolheria ASP.NET para um site inerentemente visual, cuja interface externa com o usuário fosse a parte essencial da aplicação;

  • Eu não escolheria Castle Monorail para aplicações de pequeno ou médio porte em que manutenção fosse mais importante do que o desenvolvimento de nova funcionalidade;

  • Eu não escolheria Ruby para aplicações de rede onde o potencial de instabilidade fosse maior do que o normal;

  • Eu não escolheria Python para um ORM ultra-adaptável;

  • Eu não escolheria ASP clássico ou PHP puro para coisa nenhuma.

Conversa com Randal L. Schwartz

April 30th, 2008 § 7 comments § permalink

Durante o FISL, eu tive a oportunidade de assistir a palestra sobre Seaside dada por Randal L. Schwartz, nome famoso nas comunidades livres, principalmente de Perl, e que agora está evangelizando Seaside e Smalltalk.

Perguntei se podíamos conversar um pouco e ele aceitou graciosamente. O resultado está abaixo, em uma tradução livre:

Conte-nos um pouco sobre o seu background, como e quando você começou a programar e o que você está fazendo hoje

Eu aprendi a programar sozinho quando tinha nove anos. Quando cheguei aos quinze, já estava na frente de uma classe, ensinando meus colegas, e escrevendo código sob contrato durante os fins de semana e sendo pago de verdade.

Trabalhei para várias empresas ao longo de oito anos antes de criar a Stonehenge em 1985. A Stonehenge cresceu ao longo dos anos; nós hoje podemos contar 17 das empresas no Fortune 100 como nossos clientes.

Hoje eu gasto a maior parte do meu tempo dando palestras e escrevendo, mas ainda projeto, crio e revejo código também. Também respondo questões gratuitamente durante uma hora por dia nas dezenas de listas, blogs e comunidades Web das quais participo.

Você é extremamente famoso na comunidade Perl, mas agora está advogando Smalltalk e Seaside. O que mudou? Quando você realmente começou a usar Smalltalk?
Eu comecei a usar Smalltalk antes de Perl ser inventada, em 1982. Já escrevi sobre a história no meu blog.
Quais são as vantagens de Smalltalk sobre outras linguagens tradicionais como Perl, Ruby ou Python, por exemplo?

Smalltalk tem uma sintaxe muito simples: eu posso ensinar a sintaxe completa a alguém em cerca de 20 minutos, e, de fato, a incluo em minhas palestras introduzindo as pessoas ao Seaside. As principais implementações Smalltalk (com exceção de GNU Smalltalk) também possuem IDEs maduros permitindo a fácil exploração do código, de modo que aprender as bibliotecas é somente uma questão de olhar a implementação e uso das mesmas

E isso também é um bônus: nós temos duas implementações comerciais (Cincom e GemStone/S) e duas abertas (Squeak e GNU Smalltalk), todas suportando Seaside. Isso permite que gerentes mais preocupados, que podem hesitar ao selecionar uma linguagem estritamente suportada por voluntários, escolherem entre dois provedores comerciais para suporte. Opções são sempre boas!

Você acha que Smalltalk finalmente vai alcançar status mainstream, isto é, ganhar aceitação do mercado em geral?

Bem, Smalltalk tinha status mainstream no meio dos anos 90, logo antes de Java entrar na história, pelo menos do que tange a firmas grandes de Wall Street e outras instituições que desejavam desenvolvimento rápido de GUIs para ficar à frente da competição.

Mas sim, eu acredito que Smalltalk está posicionada para entrar o mercado novamente como um grande player. Para mais detalhes, veja meu artigo sobre O Ano do Smalltalk.

Sua palestra tinha o título, “Seaside: Seu Próximo Framework Web”. O que há de tão interessante sobre o Seaside?

Eu gosto da forma como Seaside consegue abstrair tanto o fluxo de controle (ao longo de um eixo) e a representação (ao longo do outro eixo) com relativa facilidade. Seaside parece colocar as coisas certas relacionadas perto uma das outras. Eu também gosto do “depure uma página com erro dentro da própria página”: quando algum erro aconteceu, eu posso explorar a situação dentro do depurador normalmente, consertar o que está quebrado, limpar a bagunça, e continuar a execução da página como se nada houvesse acontecido.

Da mesm forma, a persistência tradicional em Rails é feita através do Active Record, que requer que objetos passem por um mapeador objeto-relacional para chegar em SQL. Seaside pode fazer a mesma coisa (via GLORP), mas possui soluções melhores pulando inteiramente o mapeamento, e usando coisas como Magma (OODBMS), que é aberto, ou algo como GemStone/S Virtual Machine, que é comercial. Quando você tira a camada ORM, voc&e ganha muita velocidade e um ambiente de programação bem mais confortável.

O que você vê no futuro do Seaside, e como esse futuro se compara ao dos outros frameworks?
A equipe do Seaside está agora no processo de refatorar e re-empacotar o Seaside para tornar a portabilidade ao longo de várias plataformas algo mais facilmente gerenciável e modular. Isso permitirá que cada desenvolvedor use somente as partes que desejar. Eu também estou vendo vários add-ons sendo criados, como o Pier CMS e várias APIs para coisas como Google Graphs e assim por diante.
Você acha que o mercado está pronto para o Seaside?
Sim. O Rails reabriu as discussões sobre o que fazer em um mundo após o Java, voltando para linguagens com late-binding como Perl, Python e Smalltalk. E Seaside é um framework maduro, ainda mais velho do que Rails. Somente não tão conhecido. Eu espero mudar isso.
Você já colocou algo em produção com o Seaside? Se sim, quais foram os desafios?
Eu estou trabalhando em alguns projetos agora, mas nada público. O desafio inicial foi a relativa falta de documentação, o que me forçou a gastar dois dias passando por todos os e-mails na lista de discussão. Fiquei mais informada, mas definitivamente com os olhos cansados. Eu espero devolver esse conhecimento escrevendo em meu blog e ajudando a responder questões no IRC e lista de discussão.
Você agora é parte do Squeak Foundation Board. Quais são seus planos para a Squeak Foundation?
Minha preocupação primária agora são questões de licenciamento, controle das releases e publicidade. Todas essas questões já estão sendo trabalhadas, é claro, mas todos somos voluntários e sempre estamos procurando mais voluntários para ajudar.
A Squeak Foundation tem algum plano para Seaside?
Nada formal, até onde eu sei. Entretanto, como Squeak é a plataforma primária para desenvolvimento do Seaside, eu tenho certeza de que Seaside será um componente principal nesse área.
Quais são os planos mais interessantes dentro do mundo Smalltalk/Seaside atualmente?
Bem, o que me envolve no momento é o GLASS (GemStone/Linux/Apache/Seaside/Squeak), uma solução da GemStone para que pessoas possam conseguir rodar Seaside rapidaemnte. Isso também envolve levar o pessoal da GemStone a criar uma solução comercial de custo zero, mas ainda funcional (mesmo que de forma mais limitada) do GemStone/S. Com essa versão gratuita, uma pessoa poderá construir um negócio, e quando o negócio exceder as capacidades da versão, migrar sem problemas para licenças maiores e ainda razoáveis. É um bela solução para uma VM Smalltalk sólida e comercialmente suportada com persistência e clustering já presentes.
E sobre o próximo ano do FISL? Como você conseguiu três dias inteiros para Smalltalk?
Bem, como eu disse, “tudo começou com algumas doses de caipirinhas…”
Quais são os seus planos para esses três dias? Você tem a intenção de trazer outros Smalltalkers?
Eu estou trabalhando com os organizadores do FISL e vários outros provedores de soluções e grupos dentro da comunidade Smalltalk para produzir uma mini-conferências. Espero ter treinamento inicial e avançado de Smalltalk, e vários tutoriais de Seaside. Expero que a conferência possa atrair um número significativo de desenvolvedores Smalltalk para o FISL pela primeira vez, e expor os demais participantes à linguagem, de modo que todos ganhem.

Muito obrigado, Randal, pela entrevista.

Tradução do Squeak by Example: Instruções

April 25th, 2008 § 1 comment § permalink

Para quem deseja contribuir com a tradução do Squeak by Example, o Daniel Martins colocou instruções super-detalhadas de como configurar o ambiente no Ubuntu (instruções que provavelmente funcionam para a maioria das distribuições Linux com diferenças somente em como os pacotes são instalados), baixar e começar a contribuir para o projeto.

Para quem usa o Mac OS X, as instruções são essencialmente as mesmas para o uso do Git para obter os arquivos. Na parte de instalação, eu comendo o MacTeX como a distribuição LaTeX. Para obter o próprio Git, o modo mais fácil é usar o MacPorts e deixar que ele compile as dependências.

Lembrando que, se você deseja contribuir imediatamente com tradução de algum capítulo, registre o seu interesse na planilha de acompanhamento. E, como o Daniel disse, mesmo que você não queira necessariamente traduzir, precisamos de revisores para conferir o texto, uso dos termos, etc.

No mais, já temos cinco pessoas traduzindo vários capítulos. Agora é só tocar o bonde que logo teremos o livro pronto para consumo.

Tradução do Squeak by Example

April 23rd, 2008 § 15 comments § permalink

Comecei um projeto de traduzir o livro Squeak by Example em português. O livro, que foi lançado há alguns meses atrás e que é um esforço colaborativo para escrever um livro compreensivo sobre o tema e já foi traduzido parcialmente em francês e alemão. Acho que mais uma linguagem não fará mal.

Como eu não tenho acesso ao repositório ainda (estou conversando sobre o assunto com os criadores do livro), resolvi colocá-lo em um repositório Git para fácil acesso. O repositório está no Gitorious (não coloquei no Github porque o mesmo só suporta 100MB e o livro excede isso).

Como o livro é relativamente longo, é muito provável que a tradução demore um certo tempo. Contribuição, então, são muito bem-vindas.

Para quem deseja contribuir, o processo é simples: faça um clone do repostório (de preferência no próprio Gitorius) e me mande patches ou, no caso do próprio Gitorius, merge requests. Eu terei o maior prazer em incorporá-las ao repositório principal. Acesso ao repositório principal também será concedido a quem contribuir significativamente.

É isso. Mãos à obra. :-)

Atualização: O Daniel Martins já colocou no ar a planilha que usaremos para coordenar as atividades dos interessados. Quem quiser, edite a mesma para indicar o que está fazendo.

Seaside e Smalltalk avançando no Brasil

April 20th, 2008 § 6 comments § permalink

Smalltalk e Seaside dominando no FISL: notícia boa vinda do Randal Schwartz em seu blog:

But the biggest news is that based on the preliminary interest in Seaside because of my talk, the FISL conference organizers offered an **entire room for next years conference*** (the full three days with 12 hours per day), as well as four or five main-track hour talks, if I could help organize the subconference details! This is quite a gift, because it will mean that we can expose the 7000 conference attendees to a variety of Smalltalk programs, without paying for rooms or badging or promotion. The conference asked if I could get some corporate sponsors on board, and I immediately fired off email to James at Cincom and Monty at GemStone, and thank goodness they read email on Saturday, because they offered their support quickly. Of course, we have many details to work out, but everyone agrees that we will move forward!

Smalltalk é uma linguagem que está retornando com força total depois de mais de 20 anos vivendo às margens de outras linguagens tecnicamente não tão interessantes e isso é muito bom. Seaside é possivelmente o framework Web mais avançado em existência atualmente e muitas das idéias que vão influenciar o mercado nos próximos anos estão sendo testadas na prática no projeto–sem contar também os inúmeros projetos associados que estão avançando outras áreas. A comunidade Smalltalk é uma das poucas que está produzindo conteúdo real que implicará em mudanças de paradigmas e avanço na parte essencial da computação (dentro da divisão feita por Fred Brooks).

A palestra do Randal Schwartz já tinha um título provocativo de Seaside: Your Next Web Framework. No meio da palestra, ele ainda solta que Seaside é o framework que tornará obsoletos a maioria dos outros (não por si só mas pelas idéias geradas) e que Smalltalk é o próximo Ruby. Eu não tenho dúvidas que ele está, em grande parte, correto. A inovação atual não está ocorrendo em frameworks semi-orientados a objetos, mas em projetos que estão jogando fora a sabedoria convencional.

Eu, que nunca escondi minha admiração tanto pelo Smalltalk e Seaside, confesso que estou sorrindo até as orelhas. Se metade das idéias de Seaside pegarem em outros frameworks Web, os próximos anos serão muito mais produtivos.

The Seaside Bookshelf, Twitter edition

February 21st, 2008 § 0 comments § permalink

Tudo bem, eu tinha prometido não falar mais do assunto tão cedo mas não resisti. Eu prometo que dessa vez eu paro pelo menos por um tempo suficiente para o blog respirar.

Essa atualização foi uma reestruturação completa da aplicação para corrigir um erro fundamental no modo como eu tinha organizado os componentes. Agora que eu aprendi mais algumas coisinhas, acho que a estrutura ficou mais lógica e mais fácil de manter.

Além disso, adicionei suporte opcional ao Twitter: quando um livro foi adicionado, marcado como sendo lido, ou terminado, uma mensagem é enviada automaticamente se uma conta estiver configurada. Esse suporte exige o Announcements para funcionar.

O código está abaixo:

Se ainda tem alguém baixando isso, divirta-se.

The Seaside Bookshelf, RSS edition

February 19th, 2008 § 2 comments § permalink

Para os que ainda não fugiram do meu blog depois de tanto ouvir falar Seaside nos últimos dias, eu implementei um feed na aplicação desenvolvida.

O mais interessante dessa modificação é que eu tive que reorganizar a estrutura de classes da aplicação, mover alguns métodos e acrescentar variáveis de instância em algumas classes. Quando fiz a carga do pacote de mudanças no sistema, a aplicação continuou rodando normalmente e todas as classes em memória foram modificadas transparentemente. Se o sistema estivesse sendo acessado por milhares de usuários, nenhum deles teria sentido qualquer mudança e nenhuma sessão teria caído. Isso é, pelo menos para mim, o maior exemplo do poder de Smalltalk e similares.

Isso fecha o meu desenvolvimento básico e eu prometo não voltar a falar disso tão cedo.

O código está abaixo:

O próximo passo é migrar o sistema para Couch DB e ver o que acontece.

Where Am I?

You are currently browsing the Smalltalk category at Superfície Reflexiva.