Páginas

Tuesday, August 26, 2008

Django Templates + Dreamweaver

Resolvi fazer uma rápida pesquisa para saber o que é possível fazer para editar Templates do Django num editor como o Dreamweaver, depois que uma amiga expressou a vontade de usar tal ferramenta para criar o layout de um site.

Para começar, por filosofia, a linguagem de templates do Django não tenta ser amigável a editores WYSIWYG, como o Dreamweaver:

http://www.djangoproject.com/documentation/design_philosophies/

Assume designer competence

The template system shouldn’t be designed so that templates necessarily are displayed nicely in WYSIWYG editors such as Dreamweaver. That is too severe of a limitation and wouldn’t allow the syntax to be as nice as it is. Django expects template authors are comfortable editing HTML directly.


No meu caso, eu assumo competência para usar um editor de textos normal, ou usar o Dreamweaver em modo Code View (pelas funcionalidades do editor, como code-completion, code-folding, referência à mão, busca e substituição, etc), porém, de fato, nem todos os desenvolvedores trabalham assim.

Li o post do Mark Ramm sobre "user-friendly templates", e confirmei que temos aí uma grande questão de opinião. Uns defendendo linguagens que utilizam atributos em tags, como estou acostumado a usar no TurboGears, e outros mostrando vantagens notadamente no sistema do Django, com marcação própria. Eu estou aprendendo a gostar da abordagem do Django, pela quantidade reduzida de código que preciso escrever. Tudo bem que os templates em Kid geralmente são feitos copiando um já existente para garantir o código repetitivo de doctypes, xml namespaces, e resto da estrutura básica, mas a simplicidade de escrever arquivos pequenos, só com aquilo que realmente interessa, é tentador!

A propósito, a breve discussão do Mark com o Simon Willison sobre como eles estão usando AJAX me trouxe várias idéias! Já faz algum tempo que não brinco com AJAX pra valer, entretanto recentemente dei uma opinada no código de uma amiga que está desenvolvendo uma aplicação de redes sociais, e agora tenho novidades para acrescentar.

Ainda não tenho experiência suficiente no Django para saber se na hora de manter o código essa simplificação trará alguma dificuldade. A princípio, creio que não, já que geralmente me encontro usando o Firebug contra páginas servidas localmente (nunca abri um arquivo .kid no Firefox para 'debugar' e não consigo imaginar alguém fazendo isso). Além do mais, o Kid também tem herança, e com isso os arquivos que manipulamos não são exatamente o que teremos de output na tela, pensando na visualização do layout com CSS, por exemplo.

Por fim, o Beshr Kayali desenvolveu uma extensão para o Dreamweaver, DjangoExt, que promete facilitar a vida. Eu não tive paciência de me cadastrar no site da Adobe só para baixar essa extensão. Se alguém tiver o arquivo, por favor entre em contato.

Sunday, August 24, 2008

Desfazendo mudanças em um repositório SVN


Uma das vantagens de usar um sistema de controle de versão, como o Subversion, é a possibilidade de voltar atrás quando uma alteração foi indesejada.
Costumo falar para meus amigos que devemos commitar o código freqüentemente, sempre, sempre, sempre. O trabalho deve ser feito de forma incremental, uma pequena tarefas/alteração por vez, em passos de bebê.

Para desfazer uma mudança já commitada no repositório, basta seguir os passos descritos aqui: http://svnbook.red-bean.com/en/1.1/ch04s04.html

Suponha que você está trabalhando numa cópia de trabalho de /calc/trunk, e então descobre que uma mudança feita na revisão 303, que alterou o arquivo integer.c, está completamente equivocada. A alteração nunca deveria ter sido commitada. Você pode utilizar o comando svn merge para "desfazer" a mudança na sua cópia de trabalho, e depois commitar a modificação local para o repositório. Tudo que você precisa fazer é especificar uma diferenciação reversa:

$ svn merge -r 303:302 http://svn.example.com/repos/calc/trunk
U integer.c

$ svn status
M integer.c

$ svn diff

# verifique se a alteração indesejada foi removida


$ svn commit -m "Desfazendo mudança commitada em r303."
Sending integer.c
Transmitting file data .
Committed revision 350.

Uma revisão no repositório funciona como um grupo específico de alterações (changesets). Usando a opção -r, você está pedindo que o svn merge aplique um changeset, ou um conjunto deles, a sua cópia de trabalho local. No caso acima, aplicamos o changeset #303 de forma reversa.

Lembre-se que ao desfazer uma mudança, é recomendável usar o svn status e svn diff para confirmar que seu trabalho está no estado correto, e depois usar o svn commit para enviar a versão final ao repositório.

Se você está pensando: "eu não desfiz um commit de verdade, certo? A mudança ainda está lá na revisão 303. Se alguém fizer checkout de uma versão entre 303 e 349, verão a mudança indesejada!"
Isso mesmo, o svn merge apenas "remove" a mudança indesejada do HEAD (última revisão) do repositório.

Dica extra:

Para saber qual a versão atual do repositório, use o comando svn info.
Exemplos:
  • Informações úteis sobre um arquivo:
$ svn info foo.c
Path: foo.c
Name: foo.c
URL: http://svn.red-bean.com/repos/test/foo.c
Revision: 4417
Node Kind: file
Schedule: normal
Last Changed Author: sally
Last Changed Rev: 20
Last Changed Date: 2003-01-13 16:43:13 -0600 (Mon, 13 Jan 2003)
Text Last Updated: 2003-01-16 21:18:16 -0600 (Thu, 16 Jan 2003)
Properties Last Updated: 2003-01-13 21:50:19 -0600 (Mon, 13 Jan 2003)
Checksum: /3L38YwzhT93BWvgpdF6Zw==


Informação sobre diretórios:
$ svn info vendors
Path: trunk
URL: http://svn.red-bean.com/repos/test/vendors
Revision: 19
Node Kind: directory
Schedule: normal
Last Changed Author: harry
Last Changed Rev: 19
Last Changed Date: 2003-01-16 23:21:19 -0600 (Thu, 16 Jan 2003)

Saturday, August 23, 2008

Mais Django!

Definitivamente vou começar a usar Django.
Tudo que vi recentemente tem me empolgado bastante, e acabei reunindo algumas informações úteis:

Django, documentação 100% em sincronia com o código no repositório svn!
http://www.djangoproject.com/documentation/

Um livro, escrito pelos autores do framework, gratuito:
http://www.djangobook.com

Django roda no Jython!
http://code.djangoproject.com/wiki/DjangoAndJython

Várias aplicações prontas (código que se integra ao seu projeto para desempenhar funções corriqueiras)!
http://pinax.hotcluboffrance.com/apps/

Novidades no meu delicious.com:
http://delicious.com/rhcarvalho/django

E tem mais:

Django é muito mais popular que o Turbogears!
turbogears

0.07
django

1.00


http://google.com/trends?q=turbogears%2C+django%2C+&ctab=0&geo=all&date=all&sort=1


Django é tão *hot* quanto J2EE, e em ritmo crescente, enquanto o Java está decadente!
j2ee

7.00
django

1.00


http://google.com/trends?q=j2ee%2C+django%2C+&ctab=0&geo=all&date=all&sort=1


Acredito que dá para juntar templates e aplicações prontas para acelerar o desenvolvimento.
O projeto Pinax é muito interessante nesse sentido.

Até a próxima!

Tuesday, August 19, 2008

Palestra sobre Scrum com a Teamware

Hoje fui com o Ronald, da minha equipe no Labase e o Gustavo, companheiro de empresa júnior Fluxo Consultoria a uma palestra da Teamware sobre Scrum. Muito bom conhecer pessoalmente o Juan Bernabó, depois de ouvi-lo em alguns podcasts. A introdução ministrada pelo Eduardo Coppo também foi excepcional. Gostei de ver o pessoal ter o seu queijo mexido, as abordagens ágeis realmente fazem as pessoas pararem para refletir.

Eu não tenho dúvida que para o tipo de coisa que gosto de fazer não tem processo cascata que dê conta. Lá no Labase estamos gradualmente colocando a equipe nos eixos, e está sendo muito engrandecedor seguir as boas práticas, aprender coisas que ninguém ouve falar durante a graduação (infelizmente).

O engraçado é que ontem eu proferi uma mini-palestra sobre abordagens ágeis para um pessoal da Fluxo, e alguns dos slides que o Bernabó apresentou também estavam na mini palestra! Claro que nada melhor que ouvir de alguém mais experiente a complementação ao meu discurso. Note que na minha apresentação procurei não entrar em tantos detalhes de software, e sim apenas cutucar em poucos minutos os ouvintes falando mais sobre "princípios gerais".

Sunday, August 17, 2008

A invenção do computador

Esse foi o tema do texto escrito por Pierre Lévy que li nesse fim de semana.
A história é razoavelmente longa, mas certamente poderia ser uma coletânea de livros se assim desejado.

O computador nasceu no período de guerra, e, como as bombas nucleares, serviu para o mal, para aterrorizar e destruir. Todavia, o conhecimento neste momento adquirido é o que garante o bem-estar, o retardo indefinido do próximo conflito mundial, e que multiplica nossos poderes e inteligência.

O desenvolvimento de máquinas que automatizam e aceleram cálculos precede a Segunda Guerra Mundial, logo esta não pode ser dada como tese única para o surgimento dos computadores. Estes não prosperaram nem no Japão nem na Alemanha, pois foram destruídos pela guerra. Foi ela que financiou projetos nos EUA, e por isso, antes de construir equipamentos de seus interesses, cientistas tiveram que produzir encomendas do governo orientadas a aplicações militares.

Apesar de a pesquisa militar ter contribuído para o desenvolvimento das primeiras calculadoras eletrônicas, a bomba atômica de urânio foi construída sem o auxílio de qualquer computador. Essa época favorável a invenções permitiu que teorias e objetos técnicos fossem repensados e então ganhassem novos fins não-militares.

A criação dos computadores não é creditada a ninguém em especial, mas sim a alguns homens que contribuíram para tal. Destaca-se Charles Babbage, Alan Turing e John von Neumann, todos eles matemáticos. Babbage construiu máquinas de calcular, inclusive introduzindo funções de memória, objetivando construir tabelas náuticas, astronômicas e matemáticas exatas, pois as que existiam na época eram tomadas de erros.

Turing foi mais um teórico, e não deu contribuições diretas para os computadores digitais, nem para a construção de autômatos concretos. Já von Neumann redigiu o primeiro documento onde se descrevem a disposição interna e os princípios de funcionamento dos computadores modernos.

A história dos computadores também pode ser descrita pela natureza dos materiais empregados em cada época. Primeiro as máquinas mecânicas, depois eletromecânicas, eletrônicas e, por fim, os computadores. A evolução na eletrônica se deu com o tubo de vácuo, originando o transistor e os circuitos impressos. Isso sem contar o desenvolvimento das áreas de linguagem de programação, software, dispositivos de comunicação e implicações sociais.

A invenção técnica do que é a informática deveu-se a uma sucessão de fatos desordenados e reutilizações, contrastando com as idéias de algoritmo ou de mecanismo predeterminado a que está associada.

A história da informática é uma espécie de meta-rede irregular na qual cada nó define e interpreta à sua maneira, em função dos seus fins, a topologia da mesma. Cada um reinterpreta o passado e projeta um futuro segundo suas vontades. Assim, nenhum precursor ou fundador tem pertinência relevante.

Comentários pessoais:

Pierre Lévy é um Tunisiano de 52 anos, residente no Canadá. Ele é conhecido por seus estudos sobre inteligência coletiva e sociedades baseadas no conhecimento. Lévy é um nome importante na “cibercultura”.

Notei que a invenção do computador não pode ser analisada a partir de uma visão simplista. Ela se deve a uma complexa mistura de fatos, estudos e invenções, englobando o aspecto social, técnico, científico e militar.

Lévy mostra como a guerra influenciou a tecnologia, e vice-versa, e isso me deixa num estado de dúvida. Será que para construirmos, evoluirmos, precisamos de tanto terror, tanta morte, tanta destruição? Não poderiam razões mais benéficas provocar inovações em grande escala? Parece que o homem precisa sofrer para, então, usar sua inteligência para o bem.

Há uma tabela comparativa que mostra o quanto a velocidade de processamento evoluiu com o surgimentos de novas máquinas. Enquanto um homem levaria mais de dois dias para calcular a trajetória de uma bala, um computador mecânico levaria apenas duas horas. Não obstante, o ENIAC levaria apenas três segundos, um valor impensável com a tecnologia do início do século XX.

Quanto um nome para destacar como o criador do computador, concordo com o autor no argumento de que não é possível identificar alguém que tenha idealizado e construído a máquina que usamos hoje, com propósitos bem definidos e sem utilizar-se de outros equipamentos eletrônicos previamente construídos. O computador claramente não é uma máquina que foi construída “from scratch”.

Wednesday, August 13, 2008

Sobre Test-Driven Development

Ontem, no grupo de emails de XP, começou uma conversa sobre dados que suportem o uso de TDD nas grandes empresas. Os detalhes podem ser vistos em:
http://tech.groups.yahoo.com/group/extremeprogramming/message/144501

O que gostaria de deixar aqui são os links postados por Dave Nicolette, listando alguns estudos sobre o tema.

http://delicious.com/rhcarvalho/paper+tdd

Monday, August 11, 2008

Instalando Django

Finalmente comecei a brincar com o Django. Está sendo uma experiência muito satisfatória até o momento!
A instalação foi extremamente fácil. No ambiente do Ubuntu, tudo que precisei fazer foi:
1) Pegar uma cópia do repositório com a versão mais atual (eu salvei no meu /home por enquanto)
svn co http://code.djangoproject.com/svn/django/trunk/ django
2) Criar alguns symlinks para que o Python acesse os arquivos do Django
sudo ln -s `pwd`/django/django /usr/lib/python2.5/site-packages/django
sudo ln -s `pwd`/django/django/bin/django-admin.py /usr/local/bin


Dependendo do seu sistema, o site-packages pode estar em outro lugar.
Para descobrir onde, rode o seguinte comando no console:
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"

Pronto! Agora basta seguir para o tutorial em:
http://www.djangoproject.com/documentation/tutorial01/

As instruções oficiais estão em http://www.djangoproject.com/documentation/install/.

Dada a absurda facilidade para instalar, a diversão fica aumentada!
Para ambiente Windows, basta usar algum programa como o RapidSVN ou TortoiseSVN para fazer o checkout do repositório, e colocar o diretório do Django diretamente em C:\Python25\Lib\site-packages\django e copiar o arquivo django-admin.py para C:\Python25\Scripts.

Sunday, August 10, 2008

Cibernética

Neste domingo li um texto sobre cibernética, o primeiro de uma série de textos indicados para a matéria de Computadores e Sociedade. O texto é de Norbert Wiener, e foi publicado em Novembro de 1948 na Scientific America.
Segue um resumo e alguns comentários pessoais:

O campo da cibernética foi criado na década de 1940, e implica no estudo de elementos comuns no funcionamento de máquinas e seres humanos, ou seres vivos em geral, assim como a comunicação entre os mesmos.

O conceito se baseia na comprovada superposição entre complexas atividades cerebrais e simples operações de uma máquina de calcular. As capacidades implementadas nas máquinas de calcular mais avançadas, como memória, associação e escolha, mostram que o cérebro humano se comporta de maneira muito similar à das máquinas.

O objetivo da cibernética é prover um mecanismo de auto-regulação (feedback) bem representado. O termo origina-se para palavra grega para ‘piloto’, e que no latim deu origem a ‘governador’. Um exemplo do funcionamento do corpo humano, e que se assemelha ao trabalho de uma máquina, é o ato de pegar um lápis. Para tal tarefa, o sistema nervoso central envia sinais para os músculos e, em seguida, percepções cinestéticas são captadas pelos órgãos dos sentidos, realimentando o sistema nervoso num processo circular.

Para desenvolver a teoria, foi preciso uma equipe de especialistas, com amplo domínio não só na sua área específica, mas também em todas as outras relacionadas ao estudo. Norbert Wiener, matemático, trabalhou com o Dr. Rosenblueth, fisiologista, ambos convictos de que as áreas mais produtivas para o crescimento das ciências eram desprezadas como terra de ninguém entre os vários campos definidos das ciências.

A colaboração da dupla começou com um projeto da época de guerra, um aparelho de controle de fogo para artilharia antiaérea, capaz de acompanhar o percurso de um avião e predizer sua posição futura, onde, claramente, atua o princípio da auto-regulação, dado que o funcionamento do aparelho depende de operadores humanos da arma e do avião.

Posteriormente, outros cientistas passaram a participar do grupo, como o matemático John von Neumann, e outras pessoas dos campos de psicologia, sociologia, engenharia, anatomia, neurofisiologia, física entre outras.

Ainda em 1948, acreditava-se que o momento evolutivo corrente era o da comunicação e do controle. Diferente da engenharia de força, a engenharia da comunicação está preocupada com a reprodução exata de um sinal. Até o século XIX, a engenharia do corpo era vista como um ramo natural da engenharia da força, entretanto, o que ocorre, na verdade, é que o corpo humano assemelha-se muito mais ao funcionamento de uma válvula que a um sistema mecânico baseado em energia. Ou seja, o estudo de autômatos, seja de metal ou de carne, é um ramo da engenharia de comunicações.

Da mesma forma que a redundância colabora para garantir o funcionamento correto de sistemas valvulados, a transmissão de sinais através de neurônios é confiada simultaneamente a mais de um deles. Patologias do cérebro não são unicamente causadas por lesões físicas, já que os problemas funcionais transcendem o físico e passam para o campo da comunicação, ou falha desta, entre neurônios.

A distinção entre perturbações orgânicas e perturbações funcionais não está expressa no cérebro, e sim no conjunto de instruções processadas e no conteúdo armazenado, assim como em uma máquina de calcular. O armazenamento se dá na forma de memória, desaparecendo quando o cérebro morre. Logo, as perturbações mentais tratam-se de doenças da memória, da informação de circulação conservada pelo cérebro em estado ativo, e sob a forma de permeabilidade de sinapses.

Para tratar máquinas que apresentam defeitos, existem vários métodos que tem em comum a tentativa de eliminar os dados já armazenados e reiniciar o funcionamento do sistema. Entretanto, a única forma conhecida de limpar o cérebro das impressões passadas é a morte. Entre os processos não-fatais, o que mais se aproxima da limpeza é o sono, que não é capaz de retirar lembranças profundas.

Aparentemente, não existe uma forma puramente farmacêutica ou cirúrgica para intervir seletivamente na memória permanente. É nesse caso que são empregadas a psicanálise e outras medidas psicoterapêuticas.

Minhas percepções:

Resolvi entender melhor quem era Wiener e descobri que ele foi um teórico e matemático americano, que contribuiu para os campos de engenharia e comunicação eletrônica, e sistemas de controle. De fato, Wiener é também fundador da cibernética. Interessante notar que aos 14 anos ele obteve bacharel em matemática e iniciou seus estudos na área de zoologia, sendo que um ano depois pediu transferência para estudar filosofia. Aos 18 anos Wiener já tinha seu título de PhD. Certamente sua formação o forneceu uma boa base para falar com propriedade sobre interações entre seres vivos e máquinas.

Por envolver várias áreas do conhecimento, o estudo me faz lembrar o trabalho atualmente desenvolvido pela profa. Carla Verônica, no campo da neuroinformática. Para realizar seu trabalho de pesquisa, ela conta com uma equipe multidisciplinar, envolvendo programadores e outros informatas, lingüistas, psicólogos, físicos, etc. Concordo que para desbravar áreas até então pouco desenvolvidas é necessário a colaboração de especialistas que possuam visão holística do tema.

O texto também me remete ao capítulo "Memory and Metamemory: Considerations in the Training of Human Beings", por Robert Bjork, do livro "Metacognition: Knowing about knowing" que li recentemente, e trata do funcionamento da memória humana, em algumas ocasiões fazendo comparações com máquinas.

O tema é bastante relevante ao curso de Engenharia de Computação e Informação no que tange à informação. Esta pouco significa dada de forma estática e isolada, sendo preciso comunicar para dar algum sentido a mesma. Não devemos nos limitar a armazenar dados de forma eficiente em um computador, precisamos entender como o conhecimento que está a nossa volta influencia o funcionamento de nossas mentes, para aperfeiçoar os mecanismos de interação homem-máquina e homem-homem.

Thursday, August 7, 2008

Primeiras impressões no Django

De alguma forma, eu não tinha bons olhos pro Django. Parece que depois que comecei a usar o Turbogears eu me adaptei ao estilo de trabalho, e quando o Django fazia diferente acabava parecendo algo ruim.

Tirei isso da minha cabeça. Afinal, um bom tempo se passou, tanto o TG quanto o Django mudaram. O TG, aliás, é algo absolutamente diferente com a versão 2.0. Fui no site do Django e tive boas surpresas. Fiquei empolgado com o que vi. Django começou na frente.

Minhas percepções superficiais:
  • Gostei da ferramenta admin, que gera automaticamente uma inferface para classes do Model para seu projeto, e serve como scaffolding do Rails, ou quase isso. O TG não faz nada nesse nível out of the box. Existe o módulo tgcrud que supostamente faria o scaffolding, mas parece ser um projeto pouco ativo. No Turbogears temos uma interface de administração, mas ela não é tão facilmente imbutível no projeto em si. Nela, o CatWalk permite criar, ler, editar e remover itens do banco de dados via interface amigável, porém, para disponibilizar essa ferramenta na sua própria aplicação é preciso fazer algumas magias, e ainda assim não fica apresentável *.
  • Ainda em relação ao admin site, facilidades como: filtro automático em tabelas por determinado valor em uma coluna, busca baseado em uma ou mais colunas, e ordenação automática (basta clicar no título da coluna), são muito interessantes para permitir ações comumente realizadas em planilhas eletrônicas.
  • Enquanto o TG 2.0 não tem previsão de lançamento, o Django 1.0 vem no início de Setembro. É um ótimo momento de começar e já ir usando a versão que está no repositório SVN.
  • A filosofia do Django também me pareceu interessante, embora seja estranho eles quererem se chamar MTV ao invés de MVC. O que é View no MVC é Template no Django, e o que é Controller no MVC é View no Django. Só mesmo o Model se salvou.
  • Outro ponto que me causou desconforto desde o primeiro contato no início do ano passado foram os templates. Eu gosto do Kid Templating usado no TG pela cara de HTML e a limpeza visual do código. Todavia, não parece que o template do Django seja tão ruim assim, é mais questão de costume. O sistema de templating do Django suporta auto-escape, herança, e, hmm... *não* suporta código Python arbitrário! Isso parece ótimo, forçando o programador a não colocar lógica no Template (View do MVC...).

Depois que eu instalar o Django e ter percepções reais, posto o resultado!

* Se alguém se interessar em saber como colocar o CatWalk dentro de um projeto do Turbogears (sem usar o tg-admin toolbox), eu posso publicar a respeito.

Links:
http://www.djangoproject.com/documentation/tutorial02/
http://www.djangoproject.com/documentation/design_philosophies/
http://www.djangoproject.com/documentation/templates/

Python ou Ruby? Turbogears x Django x Rails

Bem, não sou o primeiro a fazer esse questionamento. Comecei a procurar a opinião das pessoas, notadamente em blogs, e a olhar os sites de tutorias de cada opção para formar a minha.

Faz um ano que venho desenvolvendo aplicações web usando o Turbogears, que considero muito legal, comparado a coisas como Java para web, PHP, e qualquer outra coisa mais "burocrática".
O TG me permite trabalhar de forma simples e that just works.

Lembro que antes de usar o TG, depois de algum tempo me divertindo com Python, eu queria experimentar ele ou o Django, que eram os frameworks para Python falados na época. Claro, foi também quando fui ver o que era o tal do Zope (nome que vi no dia que resolvi aprender Python...).

Ultimamente o Ruby on Rails tem cada vez mais "batido à porta", e não falta vontade de cair dentro e desenvolver com ele. Até agora eu só vi screencasts, li bastante, ouvi podcasts e mexi em aplicações prontas.

Mas afinal, porquê todo esse papo furado? Hoje temos mais um projeto de desenvolvimento web. Um projeto que deve durar em torno de dois anos no "rítmo universitário". Para ele, a equipe parou pra pensar no que usaríamos. Essa é uma boa hora para ver algo diferente do Turbogears, conhecer novos mundos... mas, o quão novos? Continuar no Python ou pular pro Ruby?
Eu adoro Python, sim, amo mesmo. Deixamos as outras opções de lado e vamos nos decidir entre TG, Django e RoR.

Nos próximos posts vou relatar minha percepção da relação entre Django x TG e RoR x TG.
Como não tenho experiência prática nos frameworks da esquerda, comentários são muito bem vindos! O que pode parecer bom num primeiro momento, pode esconder fraquezas a longo prazo.

Tuesday, August 5, 2008

Em breve...

Hoje comecei a sentir o peso da volta as aulas.
Vou cursar a matéria "Computador e Sociedade", e terei de produzir alguns textos. Creio que eles serão postados com o passar do tempo.

O dia foi corrido, estou juntando material sobre como instalar o SVN + Apache2, em breve vem os detalhes!

Monday, August 4, 2008

Primeira blogada

Olá mundo!

Hmmmm, frase famosa essa, não!? Em geral, quando estamos começando a aprender alguma coisa, sempre fazemos o primeiro exemplo, o "hello world". Apesar de já ter brincado de blogar no passado, isso não durou muito.
Bem, na época tinha as dificuldades da conexão discada (que ainda hoje teimam em surgir algumas vezes -- obrigado Velox...), 5 dias da semana sem computador, enfim, bastante inviável.
Agora, apesar de o tempo continuar escasso (tem alguém com este item sobrando?!), tenho boa disponibilidade de acesso a Internet, e acredito que bastante informação para compartilhar com o mundo.

O que pretendo escrever aqui é sobre tudo que se passa em minha mente, ou quase...
Ok, longe de ser possível fazer isso. Vou me concentrar na parte tecnológica. Dicas gerais que eu encontre, leituras que faço pela web, métodos ágeis (XP, etc), aplicações web... Bem, já aproveitando os conceitos de Extreme Programming, não adianta eu querer fazer um BDUP (big design up front) deste blog. Vamos ver no que vai dar com o passar do tempo!