Cem dias entre céu e mar

•Quarta-feira 1 Julho, 2009 • Deixe um comentário

Quando eu recebi a indicação desse livro imaginei que seria um livro de aventura e é! Quando mostrei para minha irmã ela disse que era um livro de auto-ajuda, também pode ser! O mais importante é que esse livro discute apenas um tema, essencial, puro e simples: sonho. Obviamente o livro não disserta sobre sonhos explicitamente. Ele não elabora filosoficamente sobre o assunto como fazem, habitualmente, os livros de auto-ajuda. Entretanto ele fala de sonhos de um jeito bem peculiar. Amyr Klink conta seu sonho de atravessar o atlântico a remo e mostra o esforço e o quanto ele lutou para conquistar seu sonho. É impressionante, mas solitariamente ele faz estudos, planeja a viagem e muito batalha atrás de patrocínios e no fim ele consegue atingir todas as suas metas, as vezes saindo-se melhor que o esperado. Obviamente ele enfrenta muitos desafios, simplesmente coisas que ele não previu. As partes mais interessantes são suas várias interações com os diversos bichos do mar. Focas, golfinhos, baleias peixinhos e tubarões, todos são personagens ativos em sua história. O valor que Amyr dá a cada um deles (inclusive dando nome a um dos peixinhos) é inigualável. Impressiona também o respeito pelos animais e a sua capacidade adaptar-se ao ambiente, varias vezes de forma forçada mas muitas delas de forma espontânea. Ele ensina tudo de forma tácita, sem quebrar o ritmo.

O que mais me impressionou neste livro foi a construção. Até a página 90 ele estava a menos de 1/3 do seu caminho percorrido e, sem correrias, ele chega ao fim da jornada em menos de 70 páginas. O estilo da escrita, que parece um diálogo de quem conta uma história pessoalmente é extremamente acalentador e rico de cultura. Quase nunca peca nos termos navais, para as poucas vezes que o faz, existe um glossário de termos nas últimas páginas.

Leitura obrigatória para todo leitor Brasileiro.

Conflitos

•Sexta-Feira 12 Junho, 2009 • Deixe um comentário

Faz uns 5 anos que eu vi pela primeira vez a série de Anime “Evangelion”. Acho que até hoje nada tocou tão profundamente tantos valores meus. Eu cresci muito depoiw de ver esse seriado. O interessante é que o protagonista mostra como é difícil o lado “maduro” das coisas. Quero dizer… Quando nós somos adultos muitas coisas mudam em relação a época em que nós somos “crianças” (Quando temos pouca maturidade e somos tratados de acordo com isso), as coisas acontecem segundo um “processo” de cobrança gradual mas os nossos pais trabalham contra nós! Eles nos protegem para que a gente possa viver o lado “bonito” da vida sem nos permitir o sentimento de culpa, dor e ansiedade de muitas coisas. Eles fazem isso com prazer e muito amor por nós. Isso é tão visível que eu conheço várias pessoas que tem a minha idade (22 anos) e ainda vivem na “aba” dos pais. Muitas dessas pessoas quando argumentadas sobre situações que até então tinham sido lidadas pelos seus pais amedrontam-se e fogem. É difícil amadurecer, aceitar responsabilidade e ter força para correr atrás do prejuízo das coisas que deram errado é uma característica de quem é maduro e quando somos infantis parece que nunca teremos um desempenho tão quantos nossos pais. Nós os amamos/admiramos por nos sentirmos inferiores. Outra característica muito importante é não saber desistir. Essa última nem é uma característica adulta, é mais uma característica compartilhada entre os gênios e os imbecís. Gênios e imbecis não sabem lidar com coisas fora das expectativas, a diferença é que o gênio tem uma base teórica e uma visão/entendimento de mundo gigantesca o imbecíl não tem isso. Com isso o gênio ultrapassa as “barreiras da realidade” joga na cara  de todos (ou seja… frusta todos) a ignorância por não entender bem o aconteceu.

Será então que gênios são super maduros? Por um lado eu acho que sim e por outro eu acho que não. Permita-me explicar. Os gênios são muito maduros quando encaram a “realidade” do mundo. Eles se deixam penetrar pelo éter da pura razão e passam a entender a mecânica de todas as coisas. No fundo “entender a mecânica” é ter os modelos da realidade bem realizados na mente, ou seja, o seu modelo representa melhor a realidade do que se pensava antes. Os gênios são mais “maduros” pois eles simplesmente abandonaram os preconceitos que a razão lhes impôs até então. Por isso muitas vezes são chamados de loucos. Eles simplesmente perderam o “crivo” do que era “verdade” até aquele momento. Eles não são maduros o suficiente por outra perspectiva pois toda essa iluminação intelectual vem acompanhada de um preço bem alto. Geralmente algo aspecto da vida dessa pessoa foi severamente sacrificado para se chegar a tal ponto e nenhum adulto o sucifiemente “adulto” acha razoável sacrificar TANTO qualquer aspecto de sua vida.

Portanto eu defino que genialidade nada mais é que determinação ao extremo em alguma área da vida de alguém. Eu queria poder espressar isso para os meus familiares, eu queria pode sacrificar esse TANTO para chegar em um nível que eu sei que as pessoas NÃO ATINGIRAM AINDA!!! O triste é que minha familia não deixa, ela me ama demais e portanto me sacrifica demais em relação a abrir mão da minha vida social. Eles enfiaram na minha cabeça que eu tenho que ser um bom cidadão e como todo bom cidadão eu tenho que ter vida social. PQP, párem inferno!! EU NÃO QUERO!!! Eu quero estudar o máximo de computação que eu quiser, não interessa o custo que isso vai ter pra mim depois. Eu já sou maduro o suficiente pra entender que as minhas escolhas alteram o curso da minha vida, diabos, me deixem VIVER O QUE EU QUERO!!!!!!!! EU PRECISO DISSO!!!!!!!!!!!

Lotus Notes

•Sábado 6 Junho, 2009 • Deixe um comentário

Eu estou programando bastante em notes ultimamente. Estou fazendo Views, Agents, Forms, Pages, Outlines, Buttons, Actions e outros. Vou dizer que no inicio foi dificílimo porque eu não conseguia achar NENHUMA documentação suficientemente estruturada para me guiar. Não sendo injusto eu consultei vários sites (quem diria, pra mim Lotus Notes era um aplicativo exclusivamente comercial sem muita documentação externa, mas existe uma comunidade razoável de experts que usam essa tecnologia pra quase tudo!!).

http://www.lotusguru.com/

http://www.nsftools.com/

http://openntf.org/Internal/home.nsf

http://www.ibm.com/developerworks/lotus (óbvio)

http://www-10.lotus.com/ldd/nd6forum.nsf/Resources/ForumFAQs?OpenDocument

Eu juro que eu procurei livros e me embrenhei o máximo possível afim de aprender as malignas linguagens @Formula e LotusScript e hoje posso dizer o seguinte: Eu sei programar Notes. Não estou dizendo que eu sei tudo, mas conheço o framework suficientemente bem para conseguir o básico aos outros.

Primeiramente tenho que falar sobre a IDE que usa-se para conseguir qualquer resultado com o notes o nosso queridíssimo Lotus Notes Designer. Não posso deixar de poupar elogios para essa IDE:

  1. É a pior IDE do mundo
  2. Dificulta codificação estruturada moderna (MVC model? Tá doido? Orientação a objeto? Pra quê isso?)
  3. Debugger lixorento “bugado” (!!)

Gostaria de enfatizar especialmente o item 2!!! As linguagens disponíveis (lotusscript e java) apesar de suportarem orientação a objeto dificilmente beneficiar-se-ão disso. A IDE DIFICULTA uma boa organização (por quê forçar o código estar separado em Script Libraries, Agents, Forms cada um subdividido de uma maneira diferente?). Acaba que a codificação acontece toda dentro de script libraries (ou seja.. coleções de funções no pior estilo C-Like) e é “consumida” pelos clientes (forms, views, agents, action buttons etc). Portanto se você é iniciante em desenvolvimento notes não se impressione: sim é tudo péssimamente suportado mas a experiência vai diminuir a dificuldade aos poucos.

Gostaria de trilhar um pequeno Roadmap para os iniciantes (em ordem de relevância/didática) que os aprendizes da milenar arte de programar notes poderiam seguir (se quiserem facilitar suas vidas:

  1. Estude o objeto NotesSession: ele é o coração de quase toda e qualquer aplicação notes. Cuidado com o uso indiscriminado, ele é pesado pois ele representa a sua sessão de execução do programa (sim! o notes client).
  2. Estude o objeto NotesDatabase: vai automatizar o notes? pode apostar que você vai usar um database notes (*.nsf), seus dados estarão lá, assim como seus arquivos de configuração, formulários de apresentação, agentes, actions etc.
  3. Estudo o objeto NotesDocument: Sim você vai usar esse bichinho DIRETO! Ele é como se fosse a unidade básica de tudo dentro do notes, vale a pena dar uma atenção especial a ele
  4. Estude os objetos de interface (NotesUIWorkspace e NotesUIDocument): Eles são quase que a base total de toda programação de interfaces do notes. A mágica aconteve via esses dois objetos
  5. Estude os objetos de view (NotesView): Elas são parte essencial do notes e praticamente a principal interface entre o utilizador e o programa. Dê especial atenção a classe NotesViewEntry que funciona como um “ponteiro” (no sentido de C/C++) para as linhas das views e por isso são importantíssimos aliados na geração de dados e maniputalação dos mesmo.
  6. Estude os objetos de navegação e coleção (NotesViewNavigator, NotesDocumentCollection e outros):  Eles são uma mão na roda quando a facilidade de uso da API é algo importante e a performance é algo impactante
  7. Aprenda como funciona a indexação do notes (essencial para todo programador)

Prometo que volto a escrever sobre o Notes dada a escassa documentação (e quando existente altamente deficitária) do assunto em português. Posso adiantar que algumas dicas “quentes” devem surgir (como programar “multi thread” em lotus script, como forçar indexações no notes e como resolver problemas “genéricos”).

Qualidade

•Domingo 31 Maio, 2009 • Deixe um comentário

Enfim eu descobri o que eu tanto procurava, aliás, não só eu mas o mundo todo.

Eu sempre acreditei na ciência e nas coisas boas que ela pode nos dar. Acreditar nela cegamente nos trás muitos prêmios na sociedade que vivemos tais como riqueza, reconhecimento, perspectivas sociais e acima de tudo mobilidade. Juntando esse conjunto de substantivos você entenderá o que eu defino como Liberdade. Liberdade para mim já foi o meu objetivo maior. Hoje eu entendo o porquê de eu fazer tanta força pra conseguir isso. Não é só pela ideia era um pouco mais que isso, era pela possibilidade de entender o mundo um pouquinho melhor e tentar ser dele um controlador, tolice minha. Como todos os nossos políticos, padres, juízes, advogados, gerentes, executivos e (por vezes) médicos eu me sentia atraído por poder. Poder de controle, pelo poder bruto (de controlar o outro pela incapacidade dele).

No fundo, nisso tudo só faltava uma coisa que difere a massa que tenta obtê-lo dos quê efetivamente conseguem-no: Qualidade. Isso mesmo, para exemplificar imagine qual a diferença entre o Obama/FHC e o Lula? Qualidade! Qual a diferença entre uma Fiat 147 e uma Ferrari do mesmo ano? Qualidade meus caros! A Qualidade muda tudo, todos e vai muito além da óbvia aquisição de poder. Qualidade penetra tudo, da carne dos músculos à ideia bem elaborada do livro mais bem escrito. A Qualidade é o que determina o que comemos, o que somos, aonde estamos e onde estaremos. A Qualidade é uma medida intangível de qualquer coisa que surge ou já surgiu nesse mundo e ela é impossível  de se definir de forma objetiva pois ela corroi o conceito objetivo.

Voltemos ao exemplo dos carros (o Fiat 147 e a Ferrari). Qual o sentido de pagar mais de 500 mil por um carro se um outro que cumpre o mesmo objetivo custa nada mais do que 10mil, é um preço muito alto para algo imperceptível. No entanto se você perguntar para QUALQUER dono de um Fiat 147 se ele queria uma Ferrari a resposta será um imediato “sim”. É nesse nível de realidade que a qualidade existe, no subconsciênte abstrato de cada ser humano. A Qualidade é algo tão subjetivo que ela é mensurada de maneiras diferentes em momentos diferentes por uma mesma pessoa, de forma objetiva não é lógica. A Qualidade transcende a lógica e todas as regras científicas não só por provocação mas por utiliza-la extensamente para sublimar todo cientificismo algébrico.

Voltando à Ferrari, todos sabemos que ela é um instrumento de precisão automotiva, eficiência mecânica aliado ao mais alto nível de design, conforto e tecnologia. A qualidade está exatamente no alto nível dos padrões científicos empregados para se chegar o mais perto possível ao parâmetro ideal de cada detalhe dos subsistemas que fazem a Ferrari um automóvel. Por isso eu afirmei acima que a Qualidade utiliza extensamente [a ciência] para sublimar o todo cientificismo algébrico. A BMW e Mercedes fabricam carros infinitamente mais baratos que um Ferrari nos mesmo padrões de qualidade e nem por isso vendem tão caro quanto a montadora italiana.

Hoje eu abandono meu sonho de liberdade (Eu já a tenho de certa forma), eu quero Qualidade.

Esse vai ser difícil.

Desenferrujando

•Segunda-feira 27 Abril, 2009 • Deixe um comentário

Esse fim de semana prolongado eu resolvi estudar C++ só pra desenferrujar o cérebro. O pior é que eu fiz isso do jeito mais difícil, no Linux. É nessas horas que todo programador sente falta do Visual Studio (da Microsoft). No linux a minha IDE toda hora trava e some (ela é feita em C puro e, provavelmente, ela não é bem testada) me deixando completamente na mão. Como a minha segunda opção é “não usar a IDE” resolvi aprender o basiquinho do compilador (GCC) e fazer as coisas na mão. Depois de 15min programando e debuggando ferozmente eu fiquei TOTALMENTE entediado de passar o mesmo comando e resolvi pesquisar uma solução para esse trauma. Eis que descubro as maravilhosas autotools (automake, autoconf, libtools etc). Não é que facilita?? O problema é que agora quem tem que gerir o arquivo de configuração da compilação (AKA Makefile) sou EU! Ou seja, não tem escapatória! Ou eu me ferro, ou eu me arrebento =/.

Apesar de tudo, eu consegui evoluir alguma coisa (sim… agora eu sei fazer um arquivo de configuração da compilação na mão e sei usar o GCC basicamente). É “muito bom” voltar a ter aqueles probleminhas de ponteiros e outras coisas específicas de linguagens C-Like. Faz pensar em como a máquina funciona, exercita a memória (não tenho intellisense) e me faz amar cada vez a padronização do Java.

Descobri que em linux (mais especificamente no universo de linux que eu tô me embrenhando – GNOME) os frameworks são muito parecidos com os frameworks comerciais. Como em Java e .Net a GLib funciona num esquema em que todos os objetos são descendentes de um objetido do tipo (pasmem) GObject. Ok, ok… em C/C++ eu POSSO não seguir nada isso ^.^, mas o bom senso acaba obrigando a ser assim. Dessa forma o framework coloca a prova toda a habilidade do programador em fazer uso de ponteiros, alocação dinâmica (que em C++ não é tão trivial assim porque temos que tomar conta do ciclo de vida das variáveis) e uso do próprio framewok.

Descobri que existe uma tool de documentação padronizada chamada GTK-Doc bem poderosa e segue bem de perto os padrões do Javadoc.

Se você é um pouco mais experiente deve estar me achando louco de misturar tanto C com C++ mas na realidade eu não faço isso por conta própria, eu tenho usado os wrappers de C++ (porque eu não sou louco)  para isso. Sendo eles GTKmme GLibmm. Bem melhor que me destruir fazendo tudo no braço.

Depois escrevo mais.