h1

É o programador/webdesigner um espião?

janeiro 27, 2010

Este é mais um post imenso e sem imagens (e chato).

Estes dias ouvi, acho que num destes desenhos animados num destes programas infantis matinais num destes canais populares da televisão aberta, que o espião é suas ferramentas.

O que seria de James Bond sem seus acessórios? Seria só mais uma pessoa comum. Com habilidades incríveis, mas ainda sim uma pessoa comum. Sem relógio com raio laser, sem carros invisíveis.

Então pensei: será que o programador é como um espião, ou seja, é só o que suas ferramentas possibilitam que seja?

Nunca escondi neste blog o fato de eu seu um péssimo programador. Não, não tenho pretensões de ser um hacker (hacker no sentido de um programador muito habilidoso).

Esta questão me surgiu já há algum tempo, mas hoje surgiu um fato que me fez ter mais vontade de escrever.

Um colega meu me veio me questionando se valerá a pena fazer um curso de webdesigner que ele se matriculou. Eu, antes de ver a grade do curso, lhe disse com estas palavras (registradas no log do meu programa de mensagens instantâneas):
 
Leandro
10:14 » Então
10:14 »  :-)
10:15 » Este curso é onde?

ЯΟβ§OИ
10:15 » no microingá

Leandro
10:15 » Qual o tempo de duração?
10:15 » Hum…
 
ЯΟβ§OИ
10:15 » 1 ano e 4 meses
 
Leandro
10:16 » Hum…
10:16 » Então
10:16 » Se você se interessa, e acha que vale a pena. faça
 
ЯΟβ§OИ
10:16 » acho que vale sim

Leandro
10:17 » Só não faça tendo só em mente que vai fazer pra ganhar dinheiro

ЯΟβ§OИ
10:17 » pel oque conversei com a mulher do curso
 
Leandro
10:17 » Se for, não vai dar certo
 
ЯΟβ§OИ
10:17 » ahn isso eu sei
 
Leandro
10:18 » Então
10:19 » Você já fez uma aula de testes ou coisa do tipo?
 
ЯΟβ§OИ
10:20 » ainda nao
 
Leandro
10:20 » Então
10:20 » Pede pra fazer uma aula de teste pra ver
10:20 » Vê se é realmente um curso de webdesigner
10:20 » Se for um curso de Dreamweaver, fuja
 
ЯΟβ§OИ
10:21 » qual é a diferencia ?

Leandro
10:21 » Tem muita empresa que oferece cursos de uma determinada ferramenta, mas
10:21 » Ah sim
10:21 » Dreamweraver é uma ferramenta
10:21 » É a mesma coisa que ensinar a mexer no photoshop e lhe dizer que é um curso de edição de imagens
10:21 » Pq não é
 
ЯΟβ§OИ
10:22 » ahn
10:22 » vichi cara
10:22 » serio

Leandro
10:22 » Web é uma coisa independente de ferramenta
10:22 » E quem está aprendendo deve saber disso
 
ЯΟβ§OИ
10:22 » entao da uma olhada no

Leandro
10:22 » Depois você escolhe que ferramenta usar
 
ЯΟβ§OИ
10:22 » na grade do curso
 
Página com a grade do Curso:

A internet revolucionou a comunicação entre os seres humanos. Tudo ficou mais próximo e as informações mais ágeis. No comércio eletrônico os negócios são feitos em tempo real proporcionando maior movimentação na indústria e serviços. Em contrapartida o número de pessoas qualificadas para criar e administrar sites, gerenciar páginas e atualizar sistemas, não acompanhou a agilidade deste mercado.

Aprenda a projetar, desenvolver e administrar Web Sites para internet e Intranet

Windows - Sistema Operacional com interface gráfica, permite ao usuário várias utilizações.

HTML - É uma linguagem de formatação que permite aos usuários criar sites na internet.

Internet – Ftp, Hospedagem, Provedores, tipos de endereços e etc…

Corel Draw – Programa que permite a criação de desenhos, logomarcas, cartazes, folhetos, cartões de visita, artes gráficas e layout para as páginas de internet.

PhotoShop – Apontado como o melhor programa para tratamento de imagens, montagens e manipulações de imagens em geral. Também possibilita ao usuário criar inúmeros efeitos visuais a serem aplicados em fotos, textos, texturas e etc…

FireWorks - Tem como objetivo a criação de imagens para Web, tais como figuras com transparências e banners animados, além de recursos adicionais em javascript.

DreamWeaver – Programa para desenvolver sites avançados, possui interfaces amigáveis, práticas e de fácil acesso. Considerado o melhor programa para aplicar os conteúdos aprendidos durante o curso.

Flash - Programa utilizado para criação de sites com gráficos e animações, possibilitando inserir efeitos sonoros ou musicais .

Projeto – Junta-se aqui, todo o conhecimento adquirido ao longo do curso para a criação de um WebSite.

Continuando a conversa:

Leandro
10:29 » Na minha opinião o conteúdo do curso é muito limitado
 
ЯΟβ§OИ
10:29 » ah é
10:29 » vichi
10:29 » sera que vai ser bom entoa
 
Leandro
10:29 » Então, não sei
10:30 » Quais são as tecnologias utilizadas na web?
10:30 » (x)html, javascript e css
10:30 » Estas são coisas independente de ferramentas
10:30 » Você pode fazer usando o notepad
10:30 » Coisas como criar imagens para web são só um auxilio
10:31 » Você tem que ter o conceito
10:31 » Não uma ferramenta, como o photoshop
 
ЯΟβ§OИ
10:31 » é por isso que é barato entao

Leandro
10:31 » Talvez
10:31 » Mas depois sairá bem caro pra você
 
ЯΟβ§OИ
10:31 » vichi

Leandro
10:31 » Pq você precisará comprar todas as ferramentas que lhe foram ensinadas
10:31 » Que dará mais de R$ 3000
10:32 » Bem mais que isso

Sei que Web Designer não é programação, mas pretendo chegar lá, já que, de certa forma, é bom ter uma base de programação para ser um webdesigner.

Deixo claro que eu NÂO SOU e nem me considero um webdesigner. Na verdade nem sei o que é isso. Mas sei o que NÂO é.

Frequentemente vejo por aí cursos de Dreamweaver vendidos como cursos de WebDesigner. Partem do princípio de que, a partir do momento em que uma pessoa consegue criar uma página ou um site, ela se torna Web Designer.

Uma pessoa comum com um relógio 007 pode até fazer o mesmo trabalho que um James Bond (só não sei se terá a sua disposição as mesmas mulheres :-)).

Talvez uma prova seja o site da empresa que ofereceu o curso ao meu amigo:

http://www.microinga.com.br/

Eu tenho uma péssima mania de olhar o código-fonte das páginas que acesso. Assim como de abrir estas canetas promocionais “de apertar” assim que ganho uma. São sempre iguais por dentro, mas a mania não passa. Já páginas Web não são sempre iguais, e por meio de seu código-fonte é possível saber um pouco sobre quem a fez.

Olhando o código-fonte do site acima percebe-se que a pessoa usou alguma ferramenta de geração automática de HTML a partir de elementos visuais.

Não há definição de DOCTYPE, estilos misturados no elemento ou numa tag style solta ou em outro arquivo, tabelas para definir layout e outras coisas do gênero que fariam com que qualquer webdesigner fique de cabelo em pé. Eu, que não sou, fico. Há ainda aqueles sites que usam e abusam de frames! Meu amigo imaginário, como tenho aversão à frames em HTML!

Não vou mentir. É difícil ensinar alguma coisa sem se fixar numa determinada ferramenta. Ano passado eu dei um curso de informática denominado “Melhor Idade e o mundo Digital”, oferecido pelo departamento da minha faculdade para a comunidade, com foco nas pessoas na “melhor idade”. É gratificante ensinar uma senhora de 70 anos a acessar a Internet. Mesmo sabendo ser uma tarefa mais complicada que ensinar uma criança ou um adolescente.

E havia um problema a mais: no laboratório onde ocorriam as aulas, só tinhamos computadores com Linux (Debian) instalado, e a maioria dos alunos (todos) usavam Windows em casa. Eu queria que o curso não fosse um “Curso de Windows ou Linux”, mas um curso de Informática. Foquei o conteúdo nos conceitos comuns à todas as Interfaces gráficas: menus, janelas, pastas, arquivos, botões, barras, etc. Acredito ter lhes ensinado o que é e para que serve um menu, e não que para desligar o computador é necessário clicar no Menu Iniciar.

No fim nem todos absorveram 100% o conteúdo, mas percebi que avançaram muito em relação ao início do curso. Já acessavam a Internet, conversavam pelo MSN, editavam textos e enviavam por e-mail e etc.

O que acontece quando você se fixa numa só ferramenta ou programa? Bem, no caso de um webdesigner (dizem que há muita diferença entre desenvolvedor web e webdesigner) você só sabe criar alguma coisa se for com a ferramenta que aprendeu. Você passa a não saber para que serve um determinado trecho de código que o programa criou, só sabe que funciona (e no Internet Exploer 6! hauahuahua). Você quase sempre não consegue iniciar um novo projeto se não tiver a tal (ou tais) ferramentas à mão. Enfim, você vira um espião.

É claro que existem espiões que, quando presos numa ilha deserta pelo vilão da história, completamente sem seus acessórios, consegue criar uma lança-dardos com folhas de bananeira e uma catapulta com coco-verde. Este sim é o verdadeiro programador ao meu ver.

Não estou dizendo que os acessórios sejam ruins. Talvez os maiores webdesigners do mundo usam o DreamWeaver e o PhotoShop para criarem. Mas neste caso são pessoas experientes que perceberam que estas ferramentas são as melhores para o seu trabalho em particular. A ferramenta para eles passa a ser só um meio e não um fim.

No caso do curso do meu colega, colocar nomes de programas já conhecidos ajuda a impressionar aqueles que iniciarão o curso. Aprender a usar o Corel Draw para criar logotipos? Usar o PhotoShop para criar imagens? Porque não criar logotipos com o auxílio do Corel Draw? Porque não criar imagens e banners com o auxílio do PhotoShop?

Flash? Deste nem falo pois quem me conhece sabe a aversão que tenho ao Flash, principalmente para a criação de pequenos banners. (o site do curso acima têm vários destas animações inúteis).

Como é o que é ensinado nos cursos, a cultura do DreamWeaver e do Flash vai sendo transmitida de geração à geração fazendo as pessoas acreditarem que são a coisa certa por serem muito utilizadas. Não vi nada sobre padrões Web, W3c e coisas do tipo na grade do curso. E nem poderia haver, já que o próprio site não segue padrão algum. Talvez o padrão Internet Explorer :-)

Há também a questão citada na conversa: Muito bem. O cara termina um curso deste. Já é um webdesigner. Vai pro mercado de trabalho. Se for trabalhar numa empresa, tudo bem, usa os softwares da empresa. Mas e se for trabalhar como “autônomo” (nossa, ainda existe esta palavra?)? 

Adobe Photoshop: US$ 258,00
Adobe Fireworks: US$ 299,00
Adobe Flash: US$ 258,00
Adobe DreamWeaver: US$ 399,00
Corel Draw: R$ 1599,00 (PQP, PQP, PQP, PQP!!!!!!!)

Tudo isso, depois de convertido para dinheiro brasileiro com o dólar a R$ 1,85: R$ 3844,90

Nossa, pagar R$ 3844,90 para ser WebDesigner por um ano é complicado (sim, ainda têm as atualizações de versões).

Nem incluí o preço do Windows na conta, pois considero que o aluno já tenha o Windows instalado em seu computador.

Mas e o programador?

Vejo por aí também muitos cursos de programação que te ensinam simplesmente a usar uma determinada ferramenta. E é claro que se quase sempre uma ferramenta proprietária, já que as proprietárias normalmente são as melhores do mercado. Procure no histórico deste blog e verá que eu tenho uma certa cisma com estas ferramentas.

Novamente há a questão do preço, mas, como no caso acima, ninguém paga milhares de reais por estas ferramentas. Ali na esquina da Av. Brasil com a Av. Herval fica menos de R$ 50,00 o pacote completo. A suíte, por assim dizer.

Um programador Delphi, por exemplo, quando num computador que não tem o Delphi instalado, simplesmente não têm o que fazer. E olha que às vezes o computador até tem, mas não é a versão que ele se acostumou a utilizar.

O mesmo vale para 90% (é claro que é um chute) das linguagens proprietárias, inclusive as voltadas para Web. Uma delas, utilizada por um colega de projeto, é o CodeCharge Studio, uma IDE para desenvolvimento para a Web. Nem é preciso saber nada de HTML ou Javascript para programar nesta ferramenta. Preço? R$ 984,00.

Os sistemas/site Web que cria? Horríveis, inacessíveis e fora de qualquer padrão Web. Mas faz. Você usa o relógio do James Bond e vira um desenvolvedor para Web/Designer.

“Pô meu, mas você só sabe reclamar? Quero ver você fazer ou mostrar algo melhor!”

Pois é, eu sou bom em reclamar, mas péssimo em fazer.

Em se tratando para desenvolmento para Web, digo que você pode utilizar as ferramentas que quiser. Mas saiba porque está usando. Isto garantirá que você consiga trabalhar em qualquer ferramenta. Eu mesmo uso para programar em PHP/CSS/HTML/JavaScript o famoso editor de textos Vim. Tô fazendo uma piada? Não! Ele me atende muito bem. Mas às vezes uso algo mais complexo e poderoso para a tarefa, como o Quanta Plus. Mas já brinquei com o Kompozer, programa estilo Dreamweaver, mas muito mais limitado. E o melhor é conseguir com que todas estas ferramentas conversem entre vi. Ou seja, um documento escrito no Vim deve obrigatoriamente funcionar no Quanta e no Kompozer.

Ah sim, esqueci de dizer. Sou um péssimo programador/webdesigner mas não paguei nada por ferramenta alguma :-) As que eu citei acima são de graça e livres. Todas, com exceção do Quanta, são multiplataforma. Se você quiser, consegue até rodar o Quanta no Windows. Mas dá um pouco mais de trabalho.

Em se tratando de linguagens de programação, há várias delas, quase sempre com um poder igual ou superior às linguagens baseadas numa ferramenta específica. Gosta de programar em Python? Use combinações de ferramentas como editores de texto Eric4, Vim,, Emacs, Qt Designer, Glade, e etc. O mesmo vale para Qt/C++, onde há boas IDEs como o KDevelop, QT-Creator, MonkeyStudio, QDevelop, dentre outros. Para Gtk+ existe o Anjuta. Se você pegar coisas como Eclipse e Netbeans terá à sua disposição tudo que precisa para desenvolver em praticamente qualquer linguagem existente, inclusive para Web.

Mais parecido com Delphi? Há uma boa solução integrada chamada Lazarus, mas se você não quiser pode utilizar uma combinação de um editor de textos qualquer com o compilador Free Pascal, mas neste caso não terá disponível a edição gráfica de interfaces.

Uso também o navegador Firefox com algumas extensões para validar e testar meus layouts e código em páginas Web. E procuro fazer tudo dentro dos padrões da W3c.

De maneira alguma estou dizendo que o jeito que faço é melhor do que o jeito que você faz. É que nunca fui muito fã de filmes de espiões. Muitos clichês, sabe?

Ao meu ver quando nos vemos diante de um novo curso, uma nova tecnologia de interesse ou coisa do tipo, devemos ter em mente sermos capazes de escolher, dentre as ferramentas disponíveis, as que eu preciso e tenho condições de ter para realizar os objetivos, e não ter a ferramenta em si como objetivo.

Conheço ótimos webdesigners que utilizam somente ferramentas livres para criar. E nem por isso a qualidade de seus trabalhos é menor. E, quase sempre, eles conseguem trabalhar com qualquer ferramenta que tenham em mãos. E o mesmo vale para muitos programadores aí que se viram tão bem num Eclipse quando num Vim ou Emacs.

Se você chegou ao final deste texto, parabéns. Poucos conseguem :-)

h1

Bye Apache. Hello Lighttpd

janeiro 22, 2010

É isso. Mudei para uma instalação 64-bit do Ubuntu e, com a mesma configuração, mesmos módulos da versão que eu usava, de 32-bit, o Apache não funcionava direito, com alguns problemas relacionados ao mod_rewrite.

Solução? Simplesmente instalei o Lighttpd, e depois de alguns minutos para me habituar a sua configuração, o que eu precisava que funcionasse está funcionando. Muito mais simples (e leve).

Agora é só arrumar coisas relacionadas à cgi-bin e ao módulo ssi (server side include).

Gostei deste Lighttpd. Tô até pensando em migrar o servidor de produção do projeto para ele.

h1

De volta ao bom e velho KDE

janeiro 12, 2010

Eu, usuário do KDE3 do início de 2005 até final de 2008, parti para o Xfce/E17/GNOME após a caca que foi o início do KDE4, tento voltar a usar este ambiente, mas em versão 4.3, agora realmente parecendo querer mostrar a que veio.

A distribuição usada foi o Ubuntu (ou Kubuntu?) Karmic.

Uma coisa que não gostei foi o estilo Oxygen, muito espaçoso para a não-tão-grande tela do meu notebook. Por isso estou usando o maravilhoso Bespin.

E outra coisa que está ajudando é o driver proprietário da ATI, que finalmente parece estar tomando um bom rumo e querendo funcionar bem, já que tentativas anteriores resultavam em péssimo desempenho do vídeo e travamentos constantes. Já o driver OpenSource não é suportado para o vídeo deste notebook, só me restando esperar ou colocar a mão na massa. Por agora é melhor esperar :-)

Ah sim, e lá vai a captura de tela obrigatória:

Depois de uns problemas iniciais, principalmente relacionado ao pulseaudio (aptitude remove pulseaudio nele!), a coisa parece estar funcionando muito bem. Detalhe para a lista de janelas ao estilo Windows 7/Dock. Achei-a muito mais interessante do que a barra normal, que ocupa espaço demais. Há dois painéis, um na parte inferior e outro na superior, ambos permanecendo ocultos, permitindo que todas as janelas ocupem toda a tela. Sim, é difícil se acostumar à 14′ quando passou boa parte do tempo usando 19′. 14′ é sofrível. Tenho que arrumar um monitor extra.

Ps: Sim, eu gostei muito deste papel de parece de flor. Se tem alguma coisa contra, vem encarar. hauahauh

h1

Por não pensar antes de agir, já perdi muitas coisas na minha vida,…

janeiro 6, 2010

… tenho que parar de usar o rm -rf! :-)

Obs: foi uma piada nerd.

h1

Dúvida da semana: O que são tecnologias para a Web?

dezembro 31, 2009

Obs: Este é mais um post imenso feito por alguém sem ter mais o que fazer.

Web. Web. Web.

Afinal, o que é desenvolver uma aplicação para a Web? Aliás, muitos me perguntam qual a diferença entre um site e um sistema na Web. Me envergonho de não saber lhe dizer.

Primeiramente é necessário saber o que é um sistema. Daí saber diferenciá-lo de um site.

Web. Web. Web.

Hoje em dia muitos sites são sistemas. Não são só uma ou mesmo várias páginas, estáticas. Um sistema precisa ter uma lógica. Talvez até uma certa dose de interação com o usuário.

Web. Web. Web.

Não sou um bom programador, admito. Sou do tipo que quer conhecer um pouco de tudo, mas que no fim não sabe nada de nada. E nos últimos tempos me vi na missão de criar sistemas que o usuário acessasse pelo navegador, o que faz com que seja um sistema na Web. Logo eu, que mal HTML sabia! :-)

Mas esta não é a questão. Web. Web. Web.

Nestes dias, estou fazendo um mini-curso de programação em Flex. O nome Flex não é muito bom, já que é algo muito comum. Até carro hoje em dia é Flex. Se não me engano já havia uma aplicação chamada Flex, e se você usa Linux ou outro Unix, execute man flex para saber do que se trata.

Mas o flex aqui é o da Adobe. Trata-se de uma linguagem baseada em XML para criação de aplicações ricas para a Internet (RIA). A sintaxe é similar à XML (na verdade é XML! :-)) para a parte de layout e Action Script para a lógica da aplicação. ActionScript é um irmão do Javascript, e ambos usam a mesma sintaxe (ECMAScript).

Aqui já entra um novo conceito, que não é nem site nem sistema. Agora temos aplicação. Não sei o que é uma aplicação.

Enquanto tanto um site quanto um sistema têm toda sua lógica num servidor e só o visual no cliente, com as RIA a lógica está no cliente – o que não significa que não exista lógica no servidor. Este é o grande trunfo das RIAs: fazer com que o sistemas para Web não tenham mais aquela cara de “site”. No fim das contas a impressão que temos é de aquele sistema, rodando dentro do navegador, é mais uma aplicação instalada no computador, mas rodando dentro do navegador.

Ok (Web, Web, Web), tudo isso é conceito. O conceito é lindo. Volto ao Flex.

Flex é a coisa que mais ouço falar entre colegas de sala. “Porque Flex é fácil”. “Porque Flex é produtivo”. E realmente é! Minha nossa, Flex é fácil e produtivo.

Quem me conhece sabe que eu odeio Flash. Não, não o Herói da DC Comics. A plataforma Flash, da Adobe. E o Flex faz um uso exaustivo desta tecnologia. Flex é uma linguagem compilada: o compilador flex lê um ou mais arquivos MXML, converte (gera arquivos texto) Flash e em seguida usa o compilador Flash para gerar um arquivo binário SWF. Este arquivo SWF é então embutido num arquivo HTML e só aí vira uma aplicação Web. Na verdade pode ser executado num programa chamado Flash Player ou mesmo como uma aplicação Desktop, pelo Adobe Air.

Eis que me vi numa encruzilhada: Gostei muito do Flex mas não gosto de Flash. Frescura, eu sei.

Porque não gosto (é, odiar não é uma boa palavra) de Flash? Bem, talvez eu não odeie Flash. Trata-se de uma tecnologia maravilhosa. Nem ligo tanto o fato de ser proprietária. Há coisas que ainda são muito mais práticas de serem feitas em Flash do que noutra tecnologia. Eu mesmo acesso diariamente sites como o Charges.com.br, que fazem uso intensivo de animações em Flash. Talvez eu odeie a banalização da plataforma. Em que contexto? No contexto da Web, é claro!

Web. Web. Web. O que é uma aplicação que “roda na Web”? Primeiramente, não precisa ser instalada no computador do usuário. A aplicação simplesmente “roda”. Muitas empresas, tais como o Google, apostam nesta idéia. É a tar da computação em nuvem, tio.

A grande sacada do Flex é ter levado conceitos de aplicações para Desktop, como layout, menus, abas, widgets, containers para dentro de uma aplicação Web. Nada mais óbvio. A linguagem HTML ainda é presa à época onde sites não tinham cara de aplicações. Eram no máximo “sistemas”.

Mas o que é uma aplicação para Web? É algo que roda dentro do navegador, não precisa ser instalado, etc. Mas o que é rodar dentro do navegador? Há um plugin que permite abrir documentos PDF dentro do próprio navegador, sem a necessidade de uma janela externa. Aqui uso o Adobe Reader (é, é uma inhaca, demorado pra carregar, etc.). Também tem um plugin no firefox que abre o OpenOffice dentro da janela do navegador. Bem, os programas estão rodando dentro do navegador, mas precisaram ser instalados previamente. Logo não são aplicações Web.

O que é então rodar dentro do navegador? Quando você entra num site com um quadro em Flash, o seu navegador lê e interpreta um arquivo de texto. Este é o HTML. Depois, nos espaços para animações Flash, carrega um programa externo (um player) que se encarrega de interpretar o conteúdo daquela animação, naquele local pré-definido. Aí já não é mais problema do navegador, que nem precisa saber o conteúdo do objeto (normalmente um arquivo binário), embora ainda tenha de interagir de algumas maneiras.

Neste caso, uma aplicação em Flash (que pode ter sido feita no Flex) está rodando no navegador ou está rodando como o Adobe Reader no caso acima? Bem, está rodando dentro do navegador e a aplicação dentro da tag object não está instalado no computador. Acho que é sim uma aplicação para a Web.

Web. Web. Web.

Mas tem um problema: o navegador não tem o controle sobre aquilo que está rodando lá dentro, no caso do Flash (ou mesmo SilverLight ou JavaFX ou um Applet Java). O próprio plugin Flash é algo que deve estar previamente instalado para que o usuário execute aquela aplicação em Flash. Mas isto não invalida uma aplicação em Flash, já que para que uma aplicação Web rode é necessária a instalação prévia de um navegador. Um plugin, neste caso, é uma máquina virtual, e está para aplicação Flash assim como o sistema operacional está para um editor de texto.

Mas para que esta minha implicância e enrolação? Eu sou do tipo chato que acredita que os padrões web estão aí para serem seguidos. “Oh! Mais um escravo do sistema”. Não. Não só seguidos: Seguidos e melhorados.

Flash e outras linguagens vieram para tapar muitas limitações do HTML padrão. Só de uns anos para cá as grandes empresas e comunidades por trás dos padrões Web tem tomado iniciativas para acabar com tais limitações. Ai entram coisas como SVG, HTML5, CSS3, XHTML2, que ainda não, por si próprias, são capazes de prover tudo que as outras tecnologias baseadas em plugins oferecem.

O compilador Flex é open source. Senão me engano o compilador Flash que ele trás também é. Open Source é a nova moda. A Adobe liberou há um tempo as especificações dos arquivos SWF para terceiros. Isto em teoria permitiria a existência de FlashPlayers alternativos. Os únicos que eu conheço são o Gnash e o Swfdec.

Um programa “executável” em Flex é um arquivo comum do Flash, mas com um uso intensivo, mesmo que não declarado pelo programador, de código Action Script 3.0 (AS3). A maioria das aplicações em Flash hoje em dia usam uma versão anterior desta linguagem. Como resultado, hoje em dia o Gnash e o SwfDec são capazes de entender boa parte dos programas em Flash existentes na Web. Mas ainda não suportam AS3. Não se a especificação do ActionScript 3 é pública, tenho que pesquisar mais.Como resultado, não há como executar programas em Flex fora do player da Adobe. O compilador do Flex é open source, mas o runtime (a máquina virtual, o player) não.

A questão é: faria diferença se fosse open source? Muita gente confunde tecnologias abertas (tal como (X)HTML) com código aberto. Como HTML não é um código, mas sim uma linguagem, que é por definição implementável independente de sistema operacional, navegador, arquitetura de processador, dispositivo, etc., não existe relação entre ser uma tecnologia aberta e ser de código aberto. Por conseqüência, o fato de uma implementação de uma linguagem ser de código aberto (como o Moonlight, versão open source do Silverlight e o Gnash e SwfDec) não faz com que ela seja uma tecnologia aberta.

No caso oposto, é perfeitamente viável a existência de implementações de programas que interpretam HTML/JS/CSS, mas são proprietários. Exemplos? Navegadres como Safari (embora sua engine seja LGPL), Internet Explorer, Opera.

A próprio Google, empresa que investe pesado nos padrões Web, percebe a falta de recursos na tecnologia padrão e cria coisas como o O3D, uma API para a criação de aplicações 3D interpretadas pelo próprio navegador.  Mas, como se trata de algo além do alcance dos navegadores, é implementado na forma de um plugin, embora seja acessível pelo mesmo código javascript. Não é uma API padrão, mas já abre espaço para a futuras revisões do WebGL, esta sim definida como padrão Web. Mas o plugin do Google por enquanto é preso à plataforma Intel 32bit e limitado à certos navegadores e sistemas operacionais. Eu mesmo não consegui rodar numa distribuição 64 bit.

É uma tecnologia experimental, e o Google sabe disso. Tanto que nunca vi nenhum site em “produção” que o utilizasse. Mas certamente influenciará o próprio WebGL e outras tecnologias que estão por vir.

Por falar em WebGL, o WebKit (do Chrome, Safari, etc), e Firefox já estão começando a implementar o WebGL, embora só nas versões em desenvolvimento.

É claro que estes argumentos (quais?) não são suficientes para convencer alguém a usar padrões abertos. Tentarei falar das vantagens dos plugins proprietários. Vou dar como exemplo o Flash.

Flash é uma tecnologia proprietária da Adobe. É uma tecnologia consolidada e o plugin que executa Flash talvez esteja, assim num chute, em 95% dos computadores do mundo. Ou seja, criar uma aplicação em Flash te dá certeza de que irá funcionar em praticamente todos computadores do mundo. É uma tecnologia repleta de recursos, tanto que é referência e preferência da maioria dos desenvolvedores de RIAs. Com Flash é fácil fazer coisas hoje impossíveis com padrões Web, como por exemplo aplicações de video-conferência pela Internet, já que é capaz de acessar a câmera, microfone e sistema de com do computador. As versões mais recentes suportam aceleração gráfica por hardware e o plugin oficial está disponível para os sistemas operacionais mais utilizados (embora restrito à no máximo duas arquiteturas de processador).

Hé tecnologias como Flex que trabalham “em cima” do Flash, facilitando a vida dos desenvolvedores.

Existem outras tecnologias para criação de RIAs, como o Silverlight e o JavaFX, mas não tentarei falar deles, já que pouco conheço. Mesmo do Flash posso falar com mais autoridade somente como usuário, pois não estou familiarizado com desenvolvimento usando ele em si. Mas alguns dizem que o Silverlight é muito melhor que Flash, e é provável que seja mesmo (alguns até dizem que flash e silverlight não são a “mesma coisa”, e provavelmente estão certos).

Aqui entra a dúvida: o que é melhor? Como eu disse, as tecnologias proprietárias hoje fazem muito mais que o conjunto de tecnologias definidas atualmente como padrão Web. Programadores Flash dizem que Flash é o máximo em perfeição, já que faz tudo que eles precisam. Embora Silverlight seja recente, aqueles que a usam dizem ser o máximo. Os defensores dos padrões Web frequentemente são tratados da mesma forma que os “xiitas” do software livre. Para que se prender à algum limitado como os padrões Web se podemos ter algo melhor, que são as tecnologias proprietárias citadas?

Não quero misturar padrões abertos com código aberto, mas abrirei um “parentis”.

Sobre a questão do que é melhor ou não, vou fazer uma referência ao “guru” do Software Livre, Richard Stallman, que diz que um software livre SEMPRE é melhor que um software proprietário, mesmo que seja tecnicamente inferior. Para ele, qualquer software livre, mesmo que não funcione muito bem, é melhor do que um proprietário que faça mil maravilhas, já que qualquer coisa é melhor que ser escravo (software proprietário). Mas é possível ir mais além, já que um software livre pode ser melhorado sempre, mesmo que nunca chegue ao nível de uma determinada aplicação proprietária. Exemplos aqui são desnecessários.

É claro que é muito fácil discordar dele, e a maioria certamente o faz. Paira no ar então outro cheiro, que ao meu ver é o essencial da história toda: Potencial X Recursos.

O que Stallman acredita para o software livre e que os defensores dos padrões Web acreditam para o desenvolvimento na Web é no potencial de uma tecnologia padrão e não necessariamente no que ela provê no momento.

Já tecnologias proprietárias normalmente se baseiam no que o usuário-desenvolvedor precisa no momento e oferece à ele. Oferece recursos, deixando um pouco de lado a potencialidade da tecnologia. Por isso que, onde as pessoas precisam de algo “para ontem”, opta-se por tecnologias proprietárias.

Hoje a especificação do HTML5 ainda está em estado de rascunho. A do WebGL, idem. Enquanto em Flash acessar a WebCam do usuário é padrão da linguagem, os desenvolvedores do HTML5 ainda estão pensando na especificação dos métodos para tal tarefa.

O documento do HTML5 está previsto para sair como revisão final e estável em 2022 (!!!, mas o rc1 sai em 2012), enquanto Flash e Silverlight hoje “fazem tudo” que o HTML5 pretendem fazer em 2012, e é provável que quando o HTML5 saia, estas tecnologias proprietárias estejam mais avançadas. CSS3? Sem previsão de um documento estável. Para que esperar mais de uma década se posso ter para hoje? Não sei.

Como não existe um documento padrão do HTML5/CSS3, os desenvolvedores dos navegadores improvisam, baseados nos rascunhos dos respectivos documentos, recursos para os navegadores atuais. E isto gera alguns problemas de incompatibilidades.

Em CSS, existem os chamados estilos proprietários, que funcionem em determinados navegadores. Aqui não importa se são código-aberto ou não. Atributos de estilos iniciados com -khtml são para o Konqueror, do projeto KDE. Os iniciados com -webkit para os baseados em WebKit, os iniciados em -moz para Gecko (Firefox, SeaMonkey, etc.), e os iniciados em -opera para Opera. Resultado: enquanto que, por exemplo, CSS3 defina que um elemento possa ter uma borda arredondada, existe um atributo diferente para cada um destes tipos de navegadores. E ainda há o fato como WebKit suportar formas mais avançadas de atribuição de bordas.

Por que isso acontece? Pois enquanto que, em tecnologias proprietárias a empresa que cria o plugin define a API da linguagem, as tecnologias abertas são feitas “ao avesso”. Ou seja, os navegadores implementam determinados recursos, mais ou menos previstos na linguagem, e dependendo se forem bons ou não, podem ser incluídos na especificação. Aí é implementado em todos os navegadores. Porque? Pois quem desenvolve os padrões não é uma empresa, mas um consórcio de empresas, instituições e comunidades interessadas. Assim quem está por trás do HTML5 são empresas como Google e Apple. O próprio recurso Canvas, talvez uma das maiores inovações do HTML5, surgiu inicialmente no navegador Safari, da Apple, e foi depois incluído na especificação da linguagem.

Mas há gente que não sabe brincar e cria coisas como behaviors e ActiveX, ambos tecnologias do navegador Internet Explorer.

O problema disso é a falta de segurança em se utilizar hoje HTML5 quando não se tem certeza de sua cara em 2012. Não existe exatamente um “chão para pisar”, como acontece com tecnologias proprietárias. Mas, ao contrário destas, padrões abertos não podem mudar “de uma hora para outra”, o que faz com que o acesso à um objeto de vídeo hoje não será muito diferente do método de acesso final.

Penso que o HTML é a “linguagem de máquina” da Internet. Ou seja, assim como hoje, embora seja possível escrever aplicações pra computador usando Assembly ou mesmo linguagem de máquina, a maioria das pessoas não acha isso produtivo. Por isso são desenvolvidas linguagens, frameworks, etc., em alto nível e com facilidades para o usuário, mas que no fundo usam a linguagem de máquina. Da mesma forma vislumbro que no futuro quem quiser criar uma RIA com Ajax poderá escrever “em baixo nível”, usando a API do HTML5, mas que terão à sua disposição frameworks e linguagens em alto nível, como OpenLaszlo, Jquery, AmpleSDK, etc.

Fazendo uma referência à este último, AmpleSDK, trata-se de um framework para desenvolvimento de aplicações ricas para Internet baseado em padrões Web. Até um tempo atrás era proprietário, mas hoje seu código é aberto. Uma das coisas engraçadas que ele faz, embora ainda não de maneira completa nem 100% compatível, é implementar a linguagem XUL para aplicações Web.

XUL é uma tecnologia proprietária (mas software livre) desenvolvida pela Mozilla há vários anos, mas ainda hoje muito utilizada em seus produtos. É em teoria uma linguagem de construção de Interfaces. Usa sintaxe XML e oferece ao usuário recursos para a construção de Interface tais como widgets (botões, menus, sliders, etc.), containers (hbox, vbox, etc.). Hoje o produto que faz uso do XUL mais famoso é o Firefox e suas extensões. O programa que estou usando para escrever este post foi inclusive escrito em XUL (scribefire).

Outras tecnologias como o XUL são o Flex e o XAML, da Microsoft.

Ah sim, voltando ao AmpleSDK, o que ele faz é, num elemento script num documento HTML, interpretar, pelo próprio Navegador, código XUL, gerando uma interface em HTML. A Interface deve fazer um uso intensivo de elementos como imagens, divs e tabelas, mas o código desenvolvido pelo usuário é XUL puro.

Na verdade estas linguagens (XUL, Flex e XAML) são no fundo o mesmo XML, e XHTML suporta a mesma sintaxe que elas. Logo não deve ser muito bizarro pensar que uma implementação do Flex que gera, ao invés de um objeto SWF, uma página (ou várias) HTML. XML/XHTML suporta namespaces, o que torna esta ideia viável num futuro. Outras tecnologias para Desktop usam XML para descrever Interfaces, tais como Qt (os arquivos do Designer são XML) e Glade (muito usado em aplicações Gtk+). Não me parece inviável que no futuro não criem um “Qt4Web ou Gtk4Web”. Tá, foi viagem, confesso, mas não é inviável.

Hoje nem todos os navegadores suportam namespaces em XML, e posso citar um que eu testei e que pelo visto não suporta, que é o konqueror (khtml).  Um outro problema das tecnologias abertas é a inexistência de um framework ótimo que satisfaça todas suas necessidades. Certamente será necessário o uso de um ou mais frameworks/linguagens para a parte visual da aplicação, outra para a persistência de dados, outro para a lógica… Enquanto isso em Flash ou Flex está tudo num só lugar, pronto para ser usado.

Além do mais, o HTML, como linguagem “nativa” dos navegadores, não está restrita à funcionar num espaço limitado da página (mesmo que visualmente ocupe toda a tela da página). Sites como o Chrome Experiments mostram que as possibilidades são muito maiores, podendo haver mesmo interações entre diferentes janelas do navegador.

O problema é que isso exige uma visão à longo prazo. Tecnologias proprietárias conseguem satisfazer o imediatismo de muitos. Mas quanto mais se investe numa tecnologia proprietária, mais dependente dela você fica e mais complicado abandoná-la é.

Mas fica no ar outra questão: “Se não posso usar tecnologias proprietárias, como criar aquele sistema de VideoChat pela Internet que meu cliente necessita hoje, e não em 2012?”. Falar em “não poder” é radical demais. Eu simplesmente não sei responder esta pergunta. Todo este texto provavelmente não passa de um delírio meu. Fica a seu critério, meu amigo.

Mas porque implicar com Flash se não existe, por exemplo, um padrão de linguagem para a criação de aplicações para Desktop, por exemplo? Porque a sintaxe e os componentes do C++/Qt são diferente do C/Gtk+ ou C++/FLTK? Uma aplicação para Desktop é diferente de uma aplicação para Web, como eu comentei no começo deste texto. Minha aplicação em QT exige que o usuário tenha instalado no seu sistema operacional as bibliotecas e arquivos necessários, ou o instalador da minha aplicação pode vir com elas. Na Internet estas dependências, principalmente em se tratando de “linguagem de máquina”, são mais complicadas de serem resolvidas.

Isso torna Flash ruim? Nunca use? Absolutamente não! Se você está desenvolvendo um sistema para seu cliente, e tem certeza de que ele está usando o plug-in Flash em navegadores e sistemas operacionais compatíveis, não há “mal” algum em utilizá-las.  Seu cliente/usuário tem plena noção do que é necessário para que possa executar o sistema, assim como no caso de um programa para Desktop para Windows ou Linux.

Mas para uso na Web, para um público genérico, acredito ser uma péssima escolha utilizar estas tecnologias proprietárias. Por isso que digo que abomino sites em Flash. Para mim podem até funcionar (embora o plugin para Linux seja uma droga e trave toda hora), mas para alguém que esteja utilizando um sistema (computador, dispositivo, e-book, celular, geladeira) não suportado (quantos SOs existem no mundo? Dezenas ou centenas), numa arquitetura de hardware diferente, a visualização do site se torna inviável. “Mas esta pessoa não existe!”, mas sua existência é necessária.

Como disse acima, estou fazendo um curso de Flex. Um dos argumentos apresentados a favor do desenvolvimento de aplicações em Flex foi o fato de que funcionará igualmente em qualquer sistema que tenha o flash plugin. “Não tem que ficar se preocupando em fazer hacks para um navegador ou outro”, certamente fazendo referência ao Internet Explorer. É claro que este problema não existe, já que é uma tecnologia monopolizada por só uma (mono = um) empresa, enquanto HTML não é código, mas um documento, e quem implementa são os desenvolvedores dos navegadores. Isto gera concorrência (porque os desenvolvedores do Opera brigam tanto com a Microsoft?) justa entre desenvolvedores de navegadores, o que resulta em mais benefícios aos usuários: velocidade, estabilidade, etc. Algo que tecnologia proprietária alguma é capaz de prover.

Continuo pensando ser só uma questão de visão à longo vs. curto prazo. Mas que enjoa esperar até 2022 para ter HTML5 pronto, isso enjoa :-)

A resposta para todas estas questões? Eu sei, mas não vou falar pra ninguém! :-)

Ah sim. Web Web Web

h1

Dos meus barcos e caravelas até alguns detalhes realmente interessantes na interface do Google Chrome (ou chromium)

dezembro 20, 2009

Eu uso o navegador Firefox há uns bons anos. Acho que na virada de 2004 para 2005 conheci este incrível navegador. Na época sua velocidade de carregamento de páginas me fascinou. Isto porque antes usava o Internet Explorer 6 numa internet discada. Senti minha “net ser turbinada” por aquele navegador, que ainda usava um 1.0 como versão.

Conheci suas extensões, me apaixonei pelos seus temas incríveis.

Porque escolhi o Firefox nesta época? Porque era leve, rápido, com boa aparência e cheio de recursos.

Com o tempo tive a necessidade de ter que usar extensões mais avançadas para desenvolver algumas coisas para a Internet. Aqui entram principalmente o WebDeveloper e o Firebug. São senhoras extensões. Ainda são o que me fazem achar o Firefox o senhor dos navegadores.

Mas o firefox foi parando no tempo. Parou de inovar. Seus problemas, que antes eram até aceitáveis, como por exemplo seu consumo de memória exagerado, seus crashes mais ou menos constantes por causa de plugins proprietários (leia-se flash), passaram a não mais serem justificáveis.

Porque? Eu já usei bastante vários navegadores “alternativos”, como o versátil Konqueror, o pequeno gigante Opera, o antigo Mozillão, hoje SeaMonkey, dentre outros. E tenho visto que a estabilidade do Firefox têm deixado a desejar pela posição que ele ocupa no mercado.

Com o tempo surgiram e se aprimoraram alternativas como o próprio Internet Explorer, mas eu já estava usando só Linux para tudo, principalmente para navegar na Internet. O IE7 saiu com uma Interface polida, mas ainda com muitos problemas que o IE6 já tinha, principalmente relacionado à padrões Web. Então nunca cheguei a usar este navegador, mas já tive vários problemas com ele :-)

Aliás, o lema do Firefox sempre foi o respeito aos padrões Web. Isto é algo que eu admiro. Mas hoje incrivelmente é, dos grandes navegadores, o que tem algumas colisas para se ajustar aos padrões Web (com exceção do IE, claro).

De uns anos para cá um “núcleo” de navegador tem se desenvolvido à uma velocidade incrível. Trata-se do WebKit, que surgiu lá no KDE2 e hoje já rendeu frutos incríveis, como o Safari, o Google Chrome, os navegadores de praticamente todos os celulares topo-de-linha (menos os com Windows Mobile, claro). Vantagens do WebKit? Baixo consumo de memória e alta compatibilidade com os padrões web. Incrível mesmo.

Talvez o fruto mais doce do WebKit nos últimos tempos tem sido o Google Chrome, badalado navegador da empresa que todos conhecemos e sabemos estar querendo dominar o mundo :-) Eu mesmo estou neste exato momento usando seu e-mail e seu serviço de DNS, não por obrigação, mas pela qualidade destes serviços.

O Google Chrome certamente é um navegador-aproveitador. Pegou um monte de coisas que já existiam, melhorou, criou outras em cima, e lançou o Chrome. Chrome é uma coisa engraçada, por ser, no Google, um navegador, um Sistema Operacional (que é um navegador?), etc.

Inicialmente oficialmente suportado somente para plataforma Windows, estava disponível para usuários Linux e Mac sob o nome de Chromium. Mesmo código, mesmas funcionalidades, mas sem o logo do Google. Recentemente foram lançadas versões do Chrome para Linux e Mac, estes sim finalmente com o suporte do Google.

Qual a grande sacada do Chrome? Ele é o novo Firefox, por assim dizer, já que suas promessas são as mesmas feitas pela raposa (tá, parente de panda), mas desta vez quase totalmente cumpridas:
- Velocidade
- Compatibilidade com padrões web
- Estabilidade
- Segurança
- Etc.

O chrome trava menos com o Firefox, já que plugins não podem travar o navegador, e nem mesmo uma aba influencia no funcionamento da outra. Executa “javascript numa velicidade…”. É sério, é incrível e muitas vezes mais rápido que o Firefox ou o Opera. Não possui uma “falha” que enche o saco no FIrefox, que é a necessidade de reiniciar o navegador ao instalar uma nova extensão (gente, isso me lembra o Windows!).

O chrome é extremamente minimalista, e alguns detalhes de interface dele me surprenderam, sendo a principal destas esta:

Na Parte de cima, vemos os controles de uma janela Maximizada. Na de baixo (ou debaixo?) vemos uma janela em estado normal.  Parece não haver muita diferença entre as imagens, mas há sim.

O chrome aproveita a barra de títulos para colocar o seletor de abas. Isto significou uma economia de espaço enorme. E como algo tão útil nunca tinha sido percebido por ninguém? Ou tinha?

Uma janela maximixada não pode ser movida. Não existe lógica em mover algo que ocupa uma nanela toda. Logo, no Chrome, não existe controle para mover uma janela neste estado. Este espaço para controlar o movimento das janelas é um desperdício. A maioria das aplicações hoje está presa no conceito de barra de título. Principalmente nos ambientes gráficos para Unix e Linux.

Já com a janela em modo normal (não maximizada), mesmo que a barra de títulos esteja cheia, haverá sempre uma borda (que equivale à barra de títulos) ou mesmo um espaço abaixo dos botões de controle para que você possa movimentar a janela.

O problema desta abordagem é que ela vai contra o controle do gerenciador de janelas. Ou seja, não creio que vá ser adotada assim de uma hora para outra nas aplicações que usam abas, pois joga o controle da janela para a aplicação (pode ver que os controles do chome têm uma cara de Windows Vista). O que poderia haver, ao meu ver, é uma mobilização dos próprios criadores dos Gerenciadores de Janelas para que este recurso seja nativo.  Recursos semelhantes, mas para o gerenciamento de janelas, já estão sendo incorporados à grandes projetos, como o KDE (http://www.undefinedfire.com/kde/window-tabbing-merged/), mas até hoje não vi algo nativo estilo Google Chrome.

O próprio pessoal da Mozilla percebeu que a Interface do Chrome é mais intuitiva e já está providenciando meios para que o Firefox 4.0 tenha este recurso. Mockups podem ser vistos nos links:

https://wiki.mozilla.org/firefox/4.0_Linux_Theme_Mockups
https://wiki.mozilla.org/firefox/4.0_Windows_Theme_Mockups
https://wiki.mozilla.org/firefox/4.0_Mac_Theme_Mockups

Ah sim, descobri que o Chrome possui nativamente um “Firebug”, o que me deixou meio triste, já que o firebug é uma das coisas que adoro e que “me prendiam” ao Firefox. Nunca gostei muito do DragonFly do Opera e este Element Instector do Chrome me parece muito bom, mesmo eu não tendo tanta intimidade como eu tenho dom o Firebug.

Quando lançarem o WebDeveloper pro Chrome eu vou chorar.

Ah sim, adoro o firefox e não vou abandoná-lo tão cedo, inclusive estou usando a extensão ScribeFire para escrever este post, já que não gosto do editor padrão do WordPress.

h1

Meu problema é quando tudo dá certo

dezembro 12, 2009

Ok. De volta aos posts diarinhos…

Este ano entrei num projeto que desenvolve uns sistemas (pq eu não gosto desta palavra? Afinal tudo é sistema!) para um projeto social do Ministério do Esporte. Até aí tudo bem. Este ano foi legal, mas eu já havia anunciado ao coordenador do mesmo que eu iria sair no final deste ano ou no máximo no início do ano que vem.

Não sei. a coisa é muito interessante, mas ao mesmo tempo estressante. Acho que vida de programador é assim mesmo. Eu tinha que fazer uma coisa que eu nem sabia ao certo o que era, já que eu não tinha comunicação direta com as pessoas que haviam encomendado o sistema em questão. Era no adivinhaoqueelequer mesmo.

Mas sem problema. Para o meu aprendizado foi ótimo. Eu, que nunca havia mexido com coisas pra web, posso te dizer hoje que “sei me virar”. Aprendi um bocado sobre PHP, html, javascript e css. E sempre validando meus códigos pelo site da w3c; com uma ajuda do cakePHP consegui me livrar de boa parte das consultas chatas em SQL, mas em alguns pontos elas ainda se tornaram necessárias.

Alguns problemas e noites mal-dormidas por causa das versões 6 e 7 do Internet Explorer (tinha que ser ele!), mas tudo resolvido.

Mas havia anunciado que sairia no máximo começo do ano que vem.

O meu coordenador já havia dito que se fosse pela questão do dinheiro ele conversaria com o povo “lá de cima” para aumentarem o valor da minha bolsa, mas eu respondi com toda a sinceridade o valor da bolsa não era a questão principal ali. Não que não seja importante, mas sinto que não estou usando todo meu potencial neste projeto, e isto, independente de um valor X ou Y, não está me deixando muito contente. O clima é super-legal, não há problema com as pessoas, mas talvez comigo.

Acontece que o projeto está crescendo bastante e ganhando mais destaque. E em tempos de Copa do Mundo… Entenderam, né? Ministério do Esporte, Copa do Mundo? Eu, saindo do projeto, desfocaria bastante a equipe. Não que faça muita falta, já que qualquer um poderia fazer o que faço, mas ainda sim desfocaria. Meu coordenador mais uma vez disse para eu continuar, e que, como o projeto está ganhando força e crescendo, faria muito bem para meu currículo. E faria mesmo! Até reforçou a proposta de discutir um aumento na minha bolsa. Eu posso até não querer admitir publicamente (pq todo mundo acha que vc é comunista por não achar dinheiro a coisa mais importante do mundo?), mas isto no fundo muito me agrada.

O projeto em si não me toma muito tempo. Uma pessoa poderia perfeitamente conciliar ele com o resto das minhas atividades. O problema é que eu simplesmente não sei organizar meu tempo. Já comentei sobre isso outras vezes.

A Kelyane até comentou que neste momento eu devo pensar principalmente em mim, e não tanto no projeto e, se eu não estou feliz nele, que sair e procure algo melhor e retome meus muitos projetos pessoais/profissionais prometidos mas nunca iniciados (sim, eu sou um político, prometo que nem… um exemplo mesmo é a reestruturação deste blog). Eu, se fosse uma pessoa organizada, conseguiria muito bem conciliar faculdade, projeto, e meus projetinhos pessoais. Eu sou uma pessoa extremamente sortuda. Tenho tudo que imagino que uma pessoa na minha idade poderia querer (menos ser milionário, pois isso é frescura).

Este ano fui mal pra caramba na faculdade. Relaxei mesmo. Mas isto não está me incomodando. Eu quis isso. Vou reprovar (ou ficar retido, como queira), mas sinto que neste ano, como nunca antes, aprendi muito mais do que faculdade alguma poderia me ensinar. E isso falando também de coisas relacionadas ao curso. Mas ainda não entendo para que servem tantos diagramas em engenharia de software!

A Kelyane vai fazer vestibular aqui na UEM. As provas acontecem amanhã, na segunda e na terça. Ela quer muito passar (e eu também quero que ela passe), mas não sei se seu desejo em sair de Maringá (sua paixão por Curitiba) a influenciará, mesmo que ela passe e inicie o curso aqui. E isto certamente muito me incomoda.

Talvez ela tenha sido a melhor coisa que me aconteceu neste ano (sim amigos, quando se vê um homem meio melancólico, pode saber que tem mulher na história), sinto que estamos muito felizes que não deveria haver motivo algum para um pensamento melancólico que seja. Mas como eu disse, me incomodo um pouco quando tudo dá certo como está dando. Tenho um problema incrível com isso.

Ontem fomos ao Sun Tech Days, aqui mesmo em Maringá, onde Sang Shin falou sobre o novo Java EE 6, que saiu… ontem. A palestra foi em inglês, e eu me surpreendi com o fato de eu ter conseguido entender boa parte do que ele disse. Algumas coisas eu não entendi no momento, mas mesmo assim depois consegui compreender. Tenho que melhorar meu inglês. Além do mais o cara fala calmamente, o que facilita o entendimento. Ah sim, não entendo bulhufas de Java. Mas me parece algo interessante, algo que já comecei a “brincar”, mas que foi só mais uma promessa de começo de ano.

Estou redigindo este texto num quarto relativamente escuro, à luz de vela, por causa de uma goteira na lâmpada. Chove forte lá fora. Já desde ontem de manhã, quase sem parar. Meu quarto está uma bagunça. Sobre a mesa há, dentre outros: um notebook (q estou usando), um cabo de rede solto; duas “canetas de escrever em CD”, uma garrafa de álcool, uma vela acesa (acabei de afastar um do outro), um limpador de LCD, algodão, duas revistas Linux Magazine, um dicionário inglês-português, uma sacola de mercado, uma caixa de óculos, pedaços de papelão, cartuchos de impressora, durex fita autocolante, um molho de chave, dois cartões de banco, uma tesoura…

Na prateleira de cima, onde costumo bater a cabeça constantemente ao levantar, um modem, um hub, duas caixinhas de fio-dental pela metade, uma lâmpada de moto queimada, um dado (me pergunte se eu tenho dado em casa pra vc ver), um joystick de computador, outra caixinha de óculos, caixinhas de CD, um pendrive de 8GB queimado…

Na prateleira ao lado, muitos papéis, pastas, uma chave philips, um porta-cd de 72 compartimentos aberto, uma pedra em formato de paralelepípedo, um filtro de linha e algumas revistas sobre web.

Abaixo, num compartimento da mesa, dois HDs queimados, um fax-modem, duas pilhas AA, ainda na embalagem. Mais abaixo, um caixa de papelão, com uma placa de vidro colada numa folha de papel. Dentro, uma webcam (sim, estou fazendo isto aqui).

Na prateleira mais acima, uma caixa de anti-ácido, que tomo só se meu estômago não me deixar fazer nada (ainda bem que não acontece com tanta frequência), dois discos de vinil da Legião Urbana, livros, uma caixa com algumas camisinhas dentro…

No chão, mais uma caixa de papelão vazia, um jornal velho, de onde veio a placa de vidro, que comprei por 4 reais, 26cm x 34cm. Tênis velhos espalhados para todos os lados, mas que não consigo me livrar.

Cama arrumada a pedido da mamãe, que já entrou no quarto reclamando (está assim há anos ;-)) que eu não arrumo as coisas.

O quarto está desarrumado; mas quem precisa de organização sou eu.

É tudo crise de final-de-ano, não se preocupe. Adeus ano velho, feliz an… feliz o cacete!

Até a próxima.

h1

Nunca fiquei tão feliz em jogar pong :-)

dezembro 11, 2009

É sério. Um jogo que já foi considerado revolucionário (assim como o tetris!) agora pode ser jogado com… as janelas do seu sistema operacional! A “bolinha’ é uma janela, o computador controla a janela da direita e vc, com as teclas direcionais ou mesmo com o mouse, controla a da esquerda.

Uma imagem para exemplificar, mas só a prática pode mostrar como é engraçado:

Para jogar, é necessário o navegador Google Chrome, ou mesmo o Chromium. O link é:
http://jtnimoy.net/popuppong

h1

Lazarus e Gambas3: Não fedem, são bacaninhas e não me estressam

novembro 22, 2009

Se tem um problema com muitos softwares para Linux não é a qualidade, mas o nome. Ás vezes o autor original dá um nome ao programa que não tem nada de estranho em seu país, mas que em outros fica bem engraçado. Alguém conhece o TkGate?

Estes dias tivemos uma aula na faculdade sobre Software Livre, e me surpreendeu a ignorância de meus colegas de sala com relação ao tema.

A começar pelo professor, uma pessoa já experiente, mas que tem como opinião que as faculdades de Maringá deveriam ensinar Delphi para os alunos. Só isso, já que é o que o mercado de Maringá necessita. Houve muita discussão sobre este tema específico há uns anos atrás entre os professores do departamento, mas não chegou-se a um consenso. Alguns passaram a ensinar algoritmo utilizando Python, outros continuaram com o Pascal e outros com a pseudo-linguagem, enquanto outros queriam que fosse Java. Mas deixa este assunto pra lá.

Pois bem, é incrível a visão limitada que o pessoal tem. Ouvi cada besteira durante esta aula, já que eu era o único no recinto que parecia conhecer um pouco mais de software livre (deixei clara minha situação de utilizador, ainda não efetivamente desenvolvedor, por falta de sei-lá-o-que).

Aqui em Maringá (norte do Paraná) formou-se uma associação entre empresas de desenvolvimento de software (APL Software Maringá) com o objetivo de tornar Maringá uma referência em desenvolvimento de software. Mas ainda sofremos muitos problemas, como a ideia – assustadora para mim – de “fábrica de software”, junto com a visão dos empresários de que o programador é algo descartável dentro da organização – numa palestra uns anos atrás um dos donos de uma destas empresas chegou a chamar nós programadores de “Merda”. As aspas aqui entraram sem querer, já que ele disse exatamente isto: Merda.

Junta-se isso à incrível dependência que as empresas têm de determinados software proprietário (basicamente tudo gira em torno de plataformas proprietárias: sistema operacional, linguagem de programação, ambiente de desenvolvimento, banco de dados, arquitetura de processador, servidor web, etc), quando por exemplo há uma tendência crescente de produtos multiplataforma, impossível com as plataformas utilizadas pelas empresas aqui na cidade.

Eu tentava argumentar que ao menos a utilização de plataformas abertas seria benéfico se as empresas de Maringá e principalmente nós programadores quiséssemos expandir nossas possibilidades além do que Maringá necessita no momento.

Mas escutava cada besteira. Muitos dos alunos nem queriam saber da aula. Era bem enfadonha. Mas eu não poderia deixar que o professor passasse aquela ideia distorcida de Software Livre/Open Source aos alunos. Não, não briguei, só procurei expor minhas ideias querendo que eles ao menos escutassem… Em vão.

Mas deixa isso pra lá que já me estressei muito por causa disso.

Fui então atrás de programas parecidos com o Delphi, não para achar algo melhor, pois sei que trata-se de um ambiente tecnicamente superior em muitos aspectos, mas me incomodou a forma como os alunos não conheciam nada que não fosse Delphi e nem queriam saber de nada que fosse “pior”.

Compilei aqui o Lazarus e o Gambas3 aqui no computador e fui “brincar”.

O Gambas é algo mais restrito, por funcionar plenamente  somente em GNU/Linux e outros Unix, mas não funcionar graficamente (IDE) no Windows.

Já o Lazarus é multiplataforma, e segue o lema “Write once, compile anywhere”. Ambas as IDEs são escritas utilizando a si mesmas, ou seja, se você sabe utilizar o Larazus, pode melhorar o próprio Lazarus.

Se você sabe programar em Gambas, pode melhorar o próprio Gambas! Mas este argumento entrou por uma orelha e entrou por outra, afinal “Já temos o Delphi que é tudo, pra que isso daí?”. O próprio professor dizia que não via a necessidade da existência de inúmeras linguagens de programação. Para ele deveriam só existir umas três. E só.

Isto daqui não é um tutorial, mas aqui vão imagens de minhas aventuras de dois dias com estas ferramentas. Nota: não sei programar em Gambas e só um pouco em Pascal. Estas ferramentas são muito fáceis de aprender. Aliás, me surpreendi muito com a quantidade de componentes no Gambas. Ele é extremamente completo.

Brincando no Lazarus:

Agora um navegador Web bastante completo e completamente funcional que criei no Gambas em pouquíssimos  cliques. Ele tem menus, é 100% compatível com os padrões Web (usa WebKit) e tem até histórico de navegação!

 

 

Quem quiser o código-fonte, vai no rapidshare (não, não sei usar o rapidshare): http://rapidshare.com/files/310653449/Navegador2-0.0.6.tar.gz.html

 

Aqui o projeto do Navegador aberto no Gambas:

Não cheguei a criar nada que fizesse coisas como acessar banco de dados, mas entre os exemplos que vêm no Gambas há aplicações que fazem isso de forma extremamente bem não devendo nada ao Delphi ou VisualStudio.

É claro que estas aplicações não são tão boas quanto os concorrentes proprietários. Mas fazem tudo que boa parte dos projetos precisam: acessar banco de dados, imprimir em impressora, criar jogos com suporte á OpenGL, dentre outros. Fiquei particularmente surpreso com os exemplos que vêm no Gambas. São desde players de vídeo, jogos, etc. E o melhor: O Lazarus é multiplataforma, e ambos já funcionam em processadores não-intel (aplicativos embarcados? Alguém?), e são de graça! Mas precisam do carinho dos desenvolvedores (principalmente o Lazarus). Precisam mesmo.

Fico por aqui por hoje. Não sou um programador de “arrastar janelas”, mesmo não tendo nada contra, mas só quero dizer que se você gosta deste tipo de programas, o Linux é um bom lugar para você, e por um preço muito acessível e vantagens que vão além do que você pode enxergar no momento.

Links:

Lazarus: http://lazarus.frespascal.org
Gambas: http://gambas.sf.net

Atualizado: Acabei de instalar o Debian numa Máquina Virtual do QEMU emulando um processador ARM e vou testar o Gambas e o Lazarus nesta plataforma para ver se rodam bem.

Atualizado2: Para não falarem mal por eu estar utilizando um software em estado ALPHA (Gambas 3), posto uma imagem da versão estável (Gambas 2), que como o nome diz é mais estável, mas que têm alguns recursos a menos (na maioria componentes), como o componente WebKit, etc:

 

h1

Comando da vez: man sex

novembro 16, 2009

$ sudo aptitude install funny-manpages
$ man sex | cat

SEX(6) EUNUCH Programmer’s Manual SEX(6)

NAME
       sex — have sex

SYNOPSIS
       sex [options] …  [username] …

DESCRIPTION
       sex allows the invoker to have sex with the user(s) specified in the command line.  If no users are specified, they are taken from the LOVERS environment variable.  Options to make things more interesting are as follows:

       -1     masturbate

       -a     external stimulus (aphrodisiac) option

       -b     buggery

       -B animal
              bestiality with animal

       -c     chocolate sauce option

       -C     chaining option (cuffs included) (see also -m -s -W)

       -d file
              get a date with the features described in file

       -e     exhibitionism (image sent to all machines on the net)

       -f     foreplay option

       -F     nasal sex with plants

       -i     coitus interruptus (messy!)

       -j     jacuzzi option (California sites only)

       -l     leather option

       -m     masochism (see -s)

       -M     triple parallel (Menage a Trois) option

       -n     necrophilia (if target process is not dead, program kills it)

       -o     oral option

       -O     parallel access (orgy)

       -p     debug option (proposition only)

       -P     pedophilia (must specify a child process)

       -q     quickie (wham, bam, thank you, ma’am)

       -s     sadism (target must set -m)

       -S     sundae option

       -v     voyeurism (surveys the entire net)

       -w     whipped cream option

       -W     whips (see also -s, -C, and -m)

ENVIRONMENT
       LOVERS is a list of default partners which will be used if none are specified in the command line.  If any are specified, the values in LOVERS is ignored.

FILES
       /usr/share/sex/animals
              animals for bestiality

       /usr/share/sex/blackbook
              possible dates

       /usr/share/sex/sundaes
              sundae recipes

       /usr/share/sex/s&m
              sado-masochistic equipment

BUGS
       ^C     (quit process) may leave the user very unsatisfied.

       ^Z     (stop process) is usually quite messy.

HISTORY
       Oldest program ever.