Cotidiano escolar

março 28th, 2012 | 0 comments

Aula do 6¬ļ ano, num primeiro bimestre sem bola:

“Caramba, t√ī fazendo um monte de coisa que eu nunca fiz na minha vida.”

N√£o sei o que dizer mas achei muito interessante o coment√°rio dessa aluna.

HTML e acessibilidade

março 28th, 2012 | 0 comments

Ontem, estava experimentando anima√ß√Ķes e outros apetrechos da CSS3.

Três computadores ligados, carregando minha página-teste:

  1. Desktop Windows 7-64: 23 polegadas, com Chrome, Firefox 11 e Internet Explorer 9
  2. Tablet Coby Kyros MID 8024: 8 polegadas, com Dolphin HD
  3. Telefone móvel Sony Xperia Live com Walkman: 3,4 polegadas, com Opera Mini

Apanhei bastante mas descobri dois atalhos para fazer a página ter boa aparência, em todos os dispositivos. O problema principal estava na largura da página e das telas. Deixo aqui algumas dicas:

  • Prefira a propriedade max-width: ela permite que as telas maiores exibam a p√°gina na largura m√°xima, enquanto as telas menores podem redimensionar a p√°gina para sua largura padr√£o, deixando o conte√ļdo todo vis√≠vel.
  • Utilize a meta tag com name=”viewport: recomendo come√ßar experimentando o¬†content=”width=device-width”, que libera a p√°gina para se moldar √† largura da tela do dispositivo.

V√° em frente e experimente!

OBS: Nem perdi meu tempo testando anima√ß√Ķes no IE. No Opera, tamb√©m n√£o funcionou. Mas o IE tem uma frescura interessante: ele simplesmente ignora a propriedade min-width. O que ele √© quer √© uma nova folha de estilos, s√≥ para ele.

Letras de m√ļsica devem ser poesias

março 27th, 2012 | 0 comments

“√Č a verdade o que assombra,

O descaso o que condena

A estupidez o que destr√≥i”

(Legi√£o Urbana, Metal contra as nuvens)

Tenho que inaugurar o primeiro artigo sobre m√ļsica assim, em alto n√≠vel. Defendo que letras de m√ļsica devem ser poesias e tento seguir este caminho, com minhas m√ļsicas.

O c√°lculo √© simples: m√ļsica n√£o inclui comunica√ß√£o verbal. O que √© a m√ļsica sen√£o a arte dos sons? A arte das palavras √© a poesia. Se a m√ļsica incluir letra, e quiser continuar pura arte, a letra precisa ser po√©tica.

O RAP √© uma sigla que significa “ritmo e poesia” (Rythim And Poetry).

E grandes cantores s√£o, comumente, chamados de poetas. Por exemplo:

“Os bot√Ķes da blusa que voc√™ usava

E meio confusa desabotoava

Iam, pouco a pouco, me deixando ver

No meio de tudo, um pouco de voc√™”

(Roberto Carlos, Os seus bot√Ķes)

Eu tamb√©m n√£o poderia escrever este post sem mencionar Roberto Carlos. Ele seria eliminado em qualquer primeira fase do √ćdolos, mas nenhum campe√£o do √ćdolos ser√° um poeta com a inspira√ß√£o dele. Este tipo de programa n√£o prepara poetas.

E anda nos faltando poetas. Nas letras atuais costumam faltar a beleza, o choque emocional que nos arrepie, nos toque de algum modo profundo. Faltam a graça e o espírito.

Precisamos separar o que é poesia do que são apenas palavras sem arte.

“Nossa, assim voc√™ me mata!

Ai, se eu te pego…

Del√≠cia… Assim voc√™ me mata”

Minha gente, o que é isso?

O que significa “Del√≠cia”, nessa letra? O que h√° de belo a√≠? N√£o tem uma rima, n√£o provoca uma reflex√£o…

Outro dia, eu estava tentando entender o que √© um “Meteoro da paix√£o”. N√£o consegui compreender nada de interessante desse termo. At√© pensei que pudesse haver algum significado escondido…

Para mim, uma m√ļsica assim, em parte √© arte, em parte √© comunica√ß√£o falada normal.

A não ser que desconsideremos os significados, como se a letra fosse em chinês ou grego, e apreciemos apenas a melodia do cantor, junto com os sons dos outros instrumentos.

Mas a√≠ voltar√° a ser apenas m√ļsica (sons), sem poesia (linguagem).

Mas pelo menos ser√° 100% arte, novamente.

Amadurecimento emocional

março 21st, 2012 | 0 comments

Da inf√Ęncia para a adolesc√™ncia, em algum momento surge a preocupa√ß√£o com a reputa√ß√£o. Surge como um medo de ser ridicularizado ou diminu√≠do, de rirem de voc√™. E quanto mais gente est√° ao redor, maior √© esse medo: o de “pagar um mico”.

Lidar com isso exige um amadurecimento emocional que, mesmo adultos depois dos 30, n√£o conseguem facilmente.

Ent√£o, o mundo te controla.

Ou pior: voc√™ se controla, mas baseado do que voc√™ acha que as pessoas acham (ou achariam)…

Você fica incapaz de reconhecer o próprio valor, com seus próprios olhos: somente consegue vê-lo olhando num espelho (as outras pessoas ao redor são este espelho), que reflete de volta para você o que você é.

Mas o mundo só te mostra o que você parece ser, não o que você é.

Quem está ao nosso redor entende pouquíssimo sobre nós: como poderiam ser um espelho ideal, para nos mostrar o que somos e quanto valemos?

Somente a própria pessoa pode chegar a ter um conhecimento suficiente sobre si mesma.

E ela deve acreditar nisso! Deve conhecer suas forças, suas fraquezas, seus talentos, descobrir qual melhor rumo para sua vida e segui-lo.

E ter maturidade emocional para n√£o desviar do seu caminho, quando as outras pessoas rirem, criticarem, tentarem atingir de alguma forma.

Pois a culpa não é delas: é sua, que mudou seu caminho com base no que achou que as outras pessoas acharam de você.

“Se cinco bilh√Ķes de pessoas acreditam em algo est√ļpido, esse algo continua sendo est√ļpido”, escreveu Anatole France.

Somente a maturidade emocional nos traz um pensamento assim.

Tá aí meu nirvana: chegar a esse ponto e viver com leveza, como as crianças vivem.

Falta ainda evoluir mais um pouquinho.

Falta de apoio

março 21st, 2012 | 0 comments

√Č uma droga quando n√£o te d√£o apoio, em algo que voc√™ vai fazer. Voc√™ sabe que, se errar, vai estar sozinho. Tem que buscar for√ßas interiores e acreditar em si mesmo, e ir √† luta com a cara √† tapa.

H√° duas coisas.

A primeira é o exagero da falta de apoio para tudo. Sabe que vai andar pisando em ovos, que precisará olhar sobre os ombros, ao redor, fazer pouco barulho.

A segunda é o exagero de quem tem todo o apoio, sabe que mesmo que erre estará seguro, e acaba chegando ao estágio do Ego inflado.

As duas coisas s√£o ruins, e as duas situa√ß√Ķes precisam de maturidade emocional, para n√£o levar a pessoa √† ru√≠na.

Seria bom o intermedi√°rio: ter apoio e n√£o deixar o ego inflar.

Mas, normalmente, a coisa funciona sem apoio mesmo, o que me lembra o trecho de Nutshell, do Alice in chains:

And yet I fight, and yet I fight
This battle all alone
No one to cry to, no place to call home

A melhor aula de 2012 (até aqui)

março 21st, 2012 | 0 comments

Aula do 6¬ļ ano. Apenas metade dos alunos com roupas trocadas para a aula na quadra.

Vamos lá, pessoal, hoje faremos atividades de apoio. Alguém consegue alcançar aquele ferro, ali em cima?

A turma olhou e viu que não dava. Ensinei a eles que há como um servir de apoio ao outro, para que ele consiga subir. Chamo de cadeirinha: entrelaçar os dedos para impulsionar o pé do outro para cima.

Quem passava perto da quadra via um professor e 12 alunos atr√°s do gol, tentando subir numa estrutura met√°lica. Parecia brincadeira de rua (e era). Algum superior viesse me repreender, mas estava certo do que fazia.

O grupo experimentou a subida.

Próxima atividade: outra cadeirinha? Pois eu também conheço essa por esse nome.

Turma, agora estamos numa praia. Uma pessoa entrou no mar, pisou numa pedra, agora o pé está sangrando e temos que levá-la para o outro lado da areia, para socorro médico. Como faremos?

Deixei-os pensar por uns segundos. Com o vácuo de ideias, mostrei o movimento dos braços, sem precisar dizer qualquer palavra. Duas pessoas dão os braços para a terceira sentar e ser transportada. Mais uma vez, foi um sucesso de participação. Desta vez, nem queriam mudar mais parar.

Próxima atividade: carrinho de mão. Esta muitos conhecem e pouca explicação foi dada.

A esta altura, os alunos j√° estavam cansados. Expliquei que aquelas eram atividades de for√ßa, que ia mesmo cansar. Mas partimos para a pr√≥xima: Pir√Ęmide humana.

Alunos de 6¬ļ ano fazendo pir√Ęmide humana? Este professor s√≥ pode estar louco! Quer mandar os alunos para um hospital…

O termo assusta, mas esta √© uma atividade que pode ser bem simples. Por exemplo, nossa tarefa foi uma pir√Ęmide de dois andares, onde, em cada dupla, um ficava no ch√£o e o outro subia em suas costas (costas, n√£o pesco√ßo), ent√£o dariam as m√£os aos outros e fechariam um c√≠rculo de dois andares.

Houve mais divers√£o do que dificuldade.

Quinta atividade: Escrever palavras com o corpo (em p√©). Ap√≥s mais uma pausa para a √°gua, ainda n√£o era uma hora de aula e dividimos o grupo dos meninos, para formar a palavra PARA, dos das meninas, para a palavra RAIO. E a√≠ a d√ļvida: O acordo ortogr√°fico alterou esta palavra?

Bem, seguimos a palavra antiga (e parece que est√° mesmo correta). Em dez minutos, estava l√° a palavra formada. Meus jurados (quatro alunos que n√£o trocaram a roupa) decidiram que a palavra estava bem “escrita”.

Sobrou tempo! Escolhi uma das atividades do próximo tema, a cooperação, e fomos correr um pouco: pique pega corrente. Regra principal: a corrente partida não poderá pegar nenhum dos fugitivos. Assim, ou eles coordenam seus movimentos, ou a corrente irá se partir a todo momento.

Assim, de três em três minutos fazíamos uma reunião de corrente (só a corrente participava dela). Lá eu os ajudava a pensar em estratégias para pegar mais rapidamente os demais. Para minha surpresa, não só foi um sucesso como não queriam mais parar de discutir estratégias.

A corrente foi melhorando, então comecei a fazer também a reunião dos fugitivos, para eles também pensarem um pouco em como fugir melhor da corrente. Ainda dei uma dica de ouro: se esconder atrás da corrente.

Enfim, chegou a hora de terminar a aula. E foi a MELHOR aula, assim, em mai√ļsculas. Surpresa foi a palavra que melhor encontrei para empregar aqui. Quem v√™ aqueles alunos ap√°ticos, que apenas jogam futebol de cal√ßa jeans, evitam trazer roupa para nem fazer a aula, ou aqueles alunos de sexto ano bagunceiros, indisciplinados ou desordenados, desta vez… Ser√° que foi apenas um dia solit√°rio de perfei√ß√£o?

Desta vez… Foi a aula perfeita.

Caracteres de quebra de linha

março 21st, 2012 | 0 comments

Uma das principais motiva√ß√Ķes que tenho para escrever neste blog √© que, quanto mais escrevo, mais aprendo.

Aliás, em muitas das nossas experiências não há perda de tempo, mas aprendizado e aprofundamento.

Quando precisamos escrever algo, somos forçados organizar toda a bagunça de conceitos e experiências da nossa memória.

Não é à toa que, quando assisto aulas, ouço o professor e vou escrevendo no caderno o que entendo. Me ajuda a organizar melhor as coisas na minha cabeça.

Abaixo, escrevo mais algo n√£o posso esquecer:

Há diferenças nos caracteres de quebra de linha, entre os sistemas operacionais. São estas:

  • Windows: \r\n
  • Linux: \n
  • BSD: \r

Estes caracteres s√£o os seguintes:

  • \n : √© o caractere n√ļmero 10 da tabela ASCII (n√£o √© “ASC dois”, √© “ASC i i”). √Č o chamado line feed, ou “V√° para a linha de baixo”;
  • \r : √© o caractere n√ļmero 13 da tabela ASCII. √Č o chamado carriage return, ou “Volte para o in√≠cio da linha”.

Sem entrar na discussão de qual é a maneira mais coerente dessas três, registro que, para o Java, a quebra de linha se dá com o caractere \n (estilo Linux).

E, mais importante ainda: O DefaultEditorKit, base de funcionamento do JTextArea e afins, superclasse do StyledEditorKit (estou trabalhando com ele, nesse momento), trabalha com o \n na memória, mas quando vai salvar ou carregar um novo arquivo texto (string), ele age conforme o sistema operacional, embora nos permita definir um caractere diferente.

√Č uma informa√ß√£o importante. O texto completo est√° aqui (em ingl√™s):

Registro feito.

Aprender uma ou mais linguagens?

março 20th, 2012 | 0 comments

Acabo de ler um ótimo artigo sobre tipagem. No final, a frase:

“Utilizar uma √ļnica tecnologia para fazer tudo √© como usar somente um tipo de material para todas as partes de uma constru√ß√£o.”

Fiquei pensativo… Decidi testar isso numa pr√°tica com as linguagens humanas, para visualizar por outro ponto de vista.

Abrir o tradutor da google e testei, em 6 idiomas, a seguinte frase:

Eu vi um p√°ssaro azul na janela

Os resultados foram estes:

  1. I saw a blue bird in the window (inglês Р24 letras)
  2. Eu vi um pássaro azul na janela (português Р25 letras)
  3. Yo vi un p√°jaro azul en la ventana (espanhol – 27 letras)
  4. Ho visto un uccello blu nella finestra (italiano – 32 letras)
  5. J’ai vu un oiseau bleu dans la fen√™tre (franc√™s – 31 caracteres)
  6. Ich sah einen blauen Vogel im Fenster (alem√£o – 31 letras)

A princ√≠pio, ingl√™s foi a mais econ√īmica de todas, seguida do portugu√™s. Mas, digamos que cada palavra desta frase seja uma parte de um programa, e eu quisesse otimizar meu trabalho agregando diferentes linguagens, este seria um resultado poss√≠vel:

I vu a bird blu im janela (19 letras)

Nesta frase, h√° pelo menos uma palavra de cada idioma. Mas digamos que eu queira manter o mais “em portugu√™s” poss√≠vel:

I vi a bird blu na janela (19 letras)

Continuo com as 19 letras e consegui diminuir o n√ļmero de idiomas para tr√™s: portugu√™s, italiano e ingl√™s. Para excluir o italiano dessa lista, eu posso ganhar s√≥ mais uma letra, assim:

I vi a bird azul na janela (20 letras)

Na pr√°tica, diminu√≠ 17% de c√≥digo da frase em ingl√™s e 35% das vers√Ķes em franc√™s e em alem√£o. Num grande programa, essa economia faria diferen√ßa. Agora, estou usando apenas dois idiomas e posso lidar com as incompatibilidades de ordem substantivo-adjetivo delas (bird azul ou azul bird?).

Mas ser√° que vale a pena?

  1. N√£o seria melhor escolher uma boa linguagem e se aprofundar nela?
  2. Ou ser√° melhor aprender as seis e buscar o m√°ximo de otimiza√ß√£o, em todas as situa√ß√Ķes?

Penso que a primeira é a melhor opção.

Abrevia√ß√Ķes exageradas s√£o desagrad√°veis

março 17th, 2012 | 0 comments

A primeira vez que estudei um bloco condicional, em Python, pensei: “Mas o que √© isso?

if aposta == segredo:
        print("VOC√ä ACERTOU!!!!! O n√ļmero era {:d}.".format(segredo))
    elif aposta > segredo:
        print("Voc√™ errou! O n√ļmero secreto √© menor.")
    else:
        print("Voc√™ errou! O n√ļmero secreto √© maior.")

O que vem a ser elif? …

Abrevia√ß√Ķes s√£o chatas. At√© compensam, quando encurtam palavras longas. Mas abreviar else if para elif¬†tornou o termo incompreens√≠vel.

Me pergunto qual ser√° a explica√ß√£o para isto…

Outra abrevia√ß√£o desnecess√°ria, no Python, √©¬†str. Para a Rede Globo, √© uma equipe de F√≥rmula 1. Em Python, √© uma designa√ß√£o in√ļtil para string, porque se a declara√ß√£o de vari√°veis, n√£o exige a declara√ß√£o do tipo, str n√£o precisar√° ser utilizado para economizar c√≥digo.

Qual a vantagem em abreviar três letras e deixar o termo incompreensível? Quem aprende Python, nem sempre tem o palpite certo sobre o significado de alguma abreviação. Ou seja: a abreviação gera confusão.

Vejamos algumas das abrevia√ß√Ķes pass√≠veis de questionamento:

random.randint()
''' rand? randbol? rand = m√£o? N√£o: rand vem de random.
Economiza 2 letras.'''
len()
''' Um leigo pergunta: "O que é len?"
Um especialista em Python responde: "length."
E o leigo suspira: "Ah...". Economizou 3 letras.'''
setattr()
''' se property() e callable() n√£o foram abreviados,
porque setattribute foi? Ecenomizou 5 letras, em troca
de confus√£o.'''
println()
/* Esta é a variação Groovy/Scala do System.out... Será que
todos sabem que ln significa line? Economiza 2 letras.*/

Ent√£o, mais um ponto importante para a nova linguagem:

  1. N√£o exagere nas abrevia√ß√Ķes.

Diga não ao ponto-e-vírgula

março 17th, 2012 | 0 comments

Diga não ao ponto-e-vírgula!

Alguém pode dizer:

“Legal, posso colocar v√°rios comandos numa mesma linha!”

√Č o confronto: Ser leg√≠vel x Ter menos linhas:

if (num1 > num2) { res = num1 - num2;  num1 = res; /*Etc.*/ }

Aliás, ter menos linhas é uma coisa, ter um código menor é outra. E ser organizado é ainda outra.

Defendo a ideia de que escrever pouco código não depende de ponto-e-vírgulas, mas de uma melhor lógica de programação, da modularização do código, entre outras coisas.

Então, o foco deve ser na facilidade de leitura e escrita de código. O ponto-e-vírgula suja a aparência e é desnecessário.

Cada linha pode terminar, simplesmente, apertando-se Enter. Mas não é assim em Java, que abusa de termos na mesma linha:

public static void main(String args[]) {}
// Isso é que é ser horizontal: o gosto por linhas longas

O groovy, amigavelmente, diminui isto para:

static main(args) {}

Ao se criar uma linguagem mais simples, que tal deixar os ponto-e-vírgulas de fora? Serão dígitos a menos, no código.

E, al√©m disso, que tal tamb√©m¬†se livrar das chaves, que abrem e fecham blocos de c√≥digo? √Č desperd√≠cio de linhas (ser vertical):

private int hexToRGB(String hex) {
    return Integer.parseInt(hex, 16);
}

Pior ainda é escrever destacando a abertura de chaves em linha própria:

private int hexToRGB(String hex)
{
    return Integer.parseInt(hex, 16);
}

Para evitar isto, e ser menos vertical, basta tornar a indentação dos blocos de código obrigatória, como faz o Python:

private int hexToRGB(String hex)
    return Integer.parseInt(hex, 16)

Ah, e sem ponto-e-vírgula, pois a linha com o Enter (\n).

Os olhos agradecem pois o código ficou bem mais limpo e compreensível. Ficou menos vertical, pasando de 4 ou 3 para 2 linhas. E ficou menos horizontal, pois mais horizontal que Java deve ser mesmo impossível.

Ent√£o, temos dois pontos importantes para uma nova linguagem:

  1. Diga não ao ponto-e-vírgula!
  2. Seja menos vertical. Seja também menos horizontal.