sexta-feira, 3 de maio de 2013

O culto ao otimismo


- Estamos muito perto do solo. Não seria melhor abrir o pára-quedas agora?
- Você precisa ter uma atitude positiva. Encontre um jeito de fazer o pulo parecer mais legal, em vez de tentar interrompê-lo.

Hoje li o texto The Cult of Positive Attitude (de onde tiro a imagem ao lado), que trata sobre um problema cada vez mais comum: a contínua necessidade de ser otimista, de fugir de críticas. Quem se posiciona de forma crítica é reclamão, resmungão, só sabe achar defeito nos outros. Acaba sendo visto como o chato, o que quer prejudicar todo mundo.

A mesma coisa com as autoajudas de cada dia: ignore o que pode dar errado e imagine o que pode dar certo. Se der errado, ao menos você tentou (mesmo que você fique no vermelho) em vez de desistir (o que poderia ter sido mais sensato). Imagine apenas a recompensa, o sucesso. Sempre é preciso estar de cabeça erguida, sempre é preciso ter um sorriso na cara, por mais falso que ele seja. Eu desejo que X seja verdade, então X é verdade e quem me disser o contrário está tentando me derrubar: pois eu sou especial e nada irá me derrubar.

Levantar e recomeçar nunca foi tão fácil quanto é hoje, então vamos transformar problemas sociais, de saúde etc... em uma mera questão de incompetência pessoal. Você é o único culpado pelo seu sofrimento. Essas pessoas famosas tentaram infinitas vezes e largaram tudo para correr atrás (mas nunca com o dinheiro delas) dos seus sonhos, então você está esperando o quê?

Dizer não sei fazer, não posso, não consigo é feio. É sinal de fraqueza. É sinal de covardia. É sinal de incompetência. Eu preciso mostrar que eu sou, para não virar motivo de fofoquinhas e piadinhas. Preciso ter resposta na ponta da língua para tudo, não posso parar para pesquisar mais e pensar um pouco sobre o que dizer. Preciso ter sempre uma resposta pronta para poder disparar rapidamente.

Com política, economia etc... é pior: qualquer aparente avanço do governo ou de uma empresa significa que temos que obrigatoriamente ser otimistas - mesmo que saibamos que é um avanço demagógico, calculado para tentar mudar a opinião pública e limpar a má imagem do Senado, da Prefeitura ou de uma empresa que não é sustentável. Quem se posiciona de forma crítica contra o governo é contra o povo, é a favor do fascismo, entre outros: prefere que as coisas fiquem como antes. Precisamos comemorar cada insignificante e insuficiente mudança enquanto as derrotas se transformam em ameaça.

Aliás, esse já é um anti-padrão que eu noto há um bom tempo:

- Se fizermos (ou não fizermos) X, Y vai acontecer. Y é ruim pois Z.
 - Vamos nos preocupar com o que pode dar certo e não com o que pode dar errado/deixa de ser reclamão/não fique cortando as expectativas dos outros/não vai dar nada/X é legal.

 X é (ou não) feito. Y acontece, e Z faz com que Y se torne ruim (ou se agrave ainda mais). Voam mimimis de um lado para o outro, voam acusações, gente é demitida, mas nada se faz para evitar que Y não volte a acontecer.


E então vamos amenizar os resultados negativos, ou mesmo omiti-los: eles não garantem a minha promoção. Eles não vendem jornal e nem ficam bonitos no horário político. Mas estão lá, escamoteados: prejuízos financeiros e materiais, impactos ambientais e sociais, etc... Se ninguém souber que as minhas 99 tentativas anteriores deram errado, posso dizer que consegui de primeira.  

Antes que venham dizer que eu sou um pessimista desiludido com a humanidade: em nenhum momento afirmei isso. Apenas penso que fechar os ouvidos e ignorar a existência de problemas, de possibilidades de falha, de erros, etc... não faz eles desaparecerem. O que resolve eles é confrontá-los, discutir possíveis soluções de forma intelectualmente honesta e aplicá-las - e isso não inclui dizer que os críticos querem ferrar com os planos dos outros, que eles tem complexo de vira-lata ou que eles querem que o país viva atrasado.

(Destaco o de forma intelectualmente honesta: trollagens não são críticas, são trollagens. E dessas sim é melhor fugir, assim como é bom evitar quem não tem a integridade de assinar embaixo do que diz e dar a cara a tapa)

quinta-feira, 28 de março de 2013

Não leia os comentários


  • O que você está escrevendo?
  • Vírus.
  • O que ele faz?
  • Quando alguém tenta postar um comentário no YouTube, primeiro ele lê esse comentário em voz alta.
  • Logo mais, em todo lugar:
  • ... eu sou um idiota.
  • Eu... eu não sabia.

Não preciso nem descrever a seção os comentários nos sites de notícias. Aparentemente, o QI médio lá tende a zero: são agressões e acusações gratuitas e infundadas, repetição ad nauseam dos mesmos clichês, fatos distorcidos e amassados para satisfazerem um ponto de vista específico.

O anonimato fornece uma confortável e quentinha carapuça para quem deseja externar toda sua ignorância: o comentarista médio sonha com a volta da ditadura, ou mesmo do nazismo - afinal, ele é um cidadão de bem, humano direito. Confunde liberdade de expressão com liberdade de preconceito. Demonstra seu refinado conhecimento de economia, política e sociologia. Demonstra não ser alienado e estar revoltado. Mesmo que ele tenha que mentir para combater a mentira ou ser desonesto para combater a desonestidade. Metalinguagem?

Ele também entende profundamente de ciência: quando alguma descoberta científica é noticiada, ele já corre para dizer que os cientistas deveriam estar se preocupando com combater a fome. Quando é apresentado algum tópico sobre a origem do homem ou do universo, sobre aspectos referentes aos outros planetas, reclamam que o homem quer ser uma divindade.

Deturpa notícias e consegue encontrar teorias da conspiração em tudo. Até mesmo a previsão do tempo ou a notícia de que um jogo de futebol terminou empatado viram golpes do PT para implantar a ditadura do proletariado no sistema comunista. Um asteroide está a caminho da terra? É o governo querendo desviar as atenções.

Tudo com que ele não concorda é do diabo. Tudo foi um castigo divino. Falam como se o fim dos tempos fosse vir amanhã (aliás, estou esperando há um bom tempo). Mas o pior é a capacidade de emitirem discursos de ódio como quem conta até 10. Qualquer tentativa de dar direitos necessários às minorias é recebida com agressões. Não querem discutir, querem é competir para ver quem fala mais alto.

Em sites onde é necessário cadastro, as coisas são melhores, mas não muito: existe gente que se dedica a criar nomes e usuários falsos para ir lá trollar e conseguir inventar uma teoria da conspiração envolvendo três partidos, duas classes sociais, algumas celebridades e dez países diferentes. Ou reclamam dos vagabundos que passam o dia sem fazer nada (estranho... transformaram a seção de comentários em um espelho dos comentaristas?).

O melhor que eu aprendi a fazer até agora foi ignorar os comentários da maioria dos sites (principalmente os que não requerem cadastro): a relação sinal/ruído deles é péssima. Muito pouco - ou nada - saiu de bom dos comentários deles. Aliás, eles são a melhor forma de desmotivar alguém: mesmo que você não goste do trabalho da pessoa, não diga simplesmente não gostei ou poderia melhorar em X: faça questão de mencionar a sexualidade, a crença ou a opinião política da pessoa infinitas vezes.

E em todo caso, se você porventura se ver no meio desses comentários, resista a tentação de ser educado: não se desperdiça educação com quem não está disposto a aceitar nada. Você vai ser atingido por uma torrente de pedradas e agressões. Felizmente elas - apesar de serem legião - são vazias, frágeis e inofensivas, exatamente como as pessoas que se escondem atrás delas.

E o pior é ver que os sites de notícias continuam firmes no uso de comentários - afinal, é audiência, é gente clicando e vendo propagandas. É lucro: ignoram a responsabilidade moral deles por uns trocadinhos. Ignoram que deve existir uma moderação que delineie o que é expressão e o que é opressão. Ignoram que estão cheios de babacas, e se o seu site está cheio de babacas, é culpa sua e exclusivamente sua: os recursos para impedi-los existem há décadas.

O anonimato revela o pior e o melhor das pessoas. Nesse caso, o pior, o muito pior. Aquilo que eles nunca teriam coragem de falar em voz alta, mas que é facilmente digitado, salvo, copiado-colado e permite que a pessoa se diga não manipulada pela mídia de massa, não alienada, não sou idiota. Mesmo que para isso ela precise escrever errado e mentir até sobre seu nome (ironicamente, para reclamar de como os outros são desonestos e antiéticos).

sábado, 16 de fevereiro de 2013

Sobre sistemas críticos, regulamentação de profissões etc...


tl;dr: Regulamentação? Sou contra. A comparação com engenharia, medicina etc... é descabida. Software crítico não é desenvolvido no GitHub por entusiastas. Seu software muito provavelmente não é crítico.

Às vezes ainda ouço discussões sobre regulamentação das profissões de informática. E vejo frequentemente, para justificar a regulamentação, a analogia com os engenheiros. Como quase-engenheiro, afirmo que simplesmente não existe como comparar o trabalho de um engenheiro com o da maioria dos desenvolvedores no aspecto da segurança do produto final.

Se uma estrutura ou um equipamento falharem, milhares de pessoas podem morrer, um país pode parar; para a maioria dos softwares, uma falha muitas vezes será um mero incômodo passageiro. (Desconsiderando gente que enlouquece quando o Facebook cai :)

Já vejo que vão falar em software crítico, então vamos ao que interessa: software crítico - aquele que lida com processos físicos de grande complexidade, vidas, grandes somas de dinheiro, etc... - não é desenvolvido por um profissional solitário: ele é desenvolvido por equipes com gente de várias áreas, que trabalham sob protocolos, legislações e normas extremamente rígidas.

Esse tipo de software passa continuamente por verificação formal, peer review e outros sistemas; uma mudança só é realizada após ficar demonstrado que ela não afeta o funcionamento de nenhuma outra parte do sistema. Testes extensivos são realizados, tanto em simulação quanto em hardware físico (muitas vezes com bancadas de teste completamente automatizadas, sem interação humana). Todas as decisões de projeto são documentadas, conforme mandam normas de órgãos reguladores e sociedades profissionais como a IEEE.

O firmware que vai num carro, num avião ou num robô cirúrgico, em aplicações onde o fabricante pode ser responsabilizado por eventuais falhas que venham a acontecer, muito provavelmente não vai ser desenvolvido por entusiastas colaborando no GitHub e coordenando atividades por um canal de IRC, nem por um time constituído apenas de desenvolvedores: vai ser desenvolvido por uma equipe de engenheiros, físicos, matemáticos entre outros. De forma interdisciplinar, cada profissional trabalhando na área do conhecimento que lhe é pertinente.

Vai ser desenvolvido em conjunto com o hardware, mantendo contato com essa equipe e com os órgãos do governo que fazem a certificação dos sistemas e subsistemas. Vai ser projetado com uma arquitetura robusta e redundante em nível de hardware: mesmo que todos os microprocessadores do meu carro parem, eu terei - ou ao menos devo ter - condições de parar ele no acostamento e acender o pisca-alerta.

O mesmo eu posso dizer do sistema pelo qual passam todas as transações de um banco, do supervisório do sistema elétrico de um país ou da plataforma que coordena todos os processos de uma grande indústria: não são desenvolvimentos que estão ao alcance dos desenvolvedores comuns, e não são projetos onde novos recursos são adicionados a todo instante.

Se sair do ar, perco o dinheiro que o AdSense me paga, um erro no banco de dados fez com que as pessoas não pudessem jogar nosso jogo ou um bug fez com que pessoas não consigam se inscrever para uma promoção não tem nada de crítico. Crítico é se sair do ar, milhões de pessoas não poderão receber seus salários amanhã, um bug fez com que um país inteiro fique sem energia, um erro no banco de dados impediu um atendimento de emergência etc....

Normalmente essas aplicações de missão crítica são áreas onde já, pela própria definição e natureza delas, não existe espaço para amadorismo ou para hacks questionáveis. E os desenvolvedores delas são as exceções altamente especializadas, não a regra. Então, não use ela como justificativa: seu software pode ser importante (e provavelmente ele é), mas ele não é crítico.

Empresas que desenvolvem sistemas críticos exigem titulação (muitas vezes mestrado ou doutorado) nas áreas de interesse. Exigem experiência comprovada e conhecimento das normas e legislações respectivas. Assim, qualquer outra regulamentação já se torna irrelevante: os contratadores efetivamente são quem regulamenta o mercado.

Outro motivo pelo qual me posiciono contra: trabalho, entre outras coisas, com desenvolvimento de software embarcado (não em aplicações críticas). Não tenho formação na área de informática: o que eu uso para meu trabalho, aprendi sozinho devido ao questionável estado do curso que faço.

Então, com uma lei dessas, pode ser que eu não possa mais exercer meu trabalho, mesmo eu tendo projetado o hardware e agora estar escrevendo o firmware ou o driver para ele. Muito bom - só que não.

Profissionais de diversas áreas podem ser, e muitas vezes são, excelentes desenvolvedores, desenvolvem várias bibliotecas e softwares amplamente utilizados, e se veriam em uma situação complicada com uma eventual regulamentação. Um médico ou um engenheiro que venha a desenvolver software para uso na sua profissão, e transforme isso em um negócio, precisa ter diploma de informática?

Temos também mais um motivo: informática é uma das poucas áreas que permite que um autodidata chegue ao mesmo nível de um profissional diplomado. Quer mexer com eletrônica? Para sair do básico, prepare-se para comprar instrumentação, montar placas de circuito impresso com componentes menores que a ponta do seu dedo etc... Seu hobby é a música? Vai ser necessário montar um estúdio, comprar instrumentos entre outros. São áreas de interesse que envolvem tempo, dinheiro, espaço, ferramental, entre outros recursos não tão facilmente acessíveis.

Já a informática? Se você está lendo esse blog, você provavelmente já tem todo o equipamento necessário: um computador e um cérebro (embora às vezes, parece que falta o segundo para alguns :). Qualquer pessoa com um mínimo de interesse pode aprender a programar, colaborar com projetos de software livre, etc.... Não me parece nada justo criar uma reserva de mercado apenas para quem tem um diploma que muitas vezes não significa nada. Nenhum dos grandes desenvolvedores atuais chegou até onde está hoje apenas com as aulas, os trabalhos e os diplomas.

E exatamente: um diploma é um pedaço de papel que significa tive aproveitamento nas disciplinas e apresentei um TCC. Mesmo que aproveitamento seja passar em tudo com a nota mínima e o TCC seja um projeto trivial. Nada diz quanto à capacidade do formando.


Mas a regulamentação vai impedir a sobrinhagem. Adivinhe? Não vai! O "sobrinho" vai comprar o diploma numa Universidade Tabajara e continuar sobrinhando. Já vi código péssimo vindo de pessoas supostamente com doutorado em Informática, e já vi código muito bom vindo de entusiastas. Assim como já vi projetos péssimos vindos de pessoas formadas em Engenharia.


Mas a regulamentação vai impedir os maus profissionais. Leia o que eu escrevi no parágrafo acima. E a regulamentação em pouco ou nada defenderá os direitos dos usuários.

Não vejo vantagem nenhuma em regulamentação das profissões relacionadas à informática, especialmente quando ela se dedica simplesmente a fechar o mercado e garantir um mercado enorme para as faculdades pagou-passou, excluindo profissionais que chegaram lá sem precisarem de 4 anos - muitas vezes perdidos, que poderiam ter sido investidos de forma melhor - de sala de aula, mas com muito mais conhecimento do que alguém que simplesmente fazia o que era pedido nos trabalhos.

Existe uma ampla diferença entre regulamentar uma profissão pela responsabilidade que ela exige, pelo risco de vida que ela envolve (que é o caso da Engenharia, Medicina etc...) e regulamentar por regulamentar ou regulamentar a pedido de um grupinho de profissionais ameaçados - que é o caso da Informática.

Nota: existem propostas muito mais razoáveis, como essa da SBC - que vai justamente contra o que certos burocratas querem: derruba por terra eventuais conselhos fiscalizadores e define liberdades no exercício das profissões de informática. 

sexta-feira, 8 de fevereiro de 2013

Exportando dados do LTspice e lendo eles em um programa Python + ajuste de curvas

(Obs.: post técnico, mas nada que um mortal não consiga ler)

Esses dias, precisei ler dados gerados no LTspice em um programa Python. Aliás, essa é uma solução relevante para incluir gráficos do LTspice em trabalhos acadêmicos, papers etc... visto que ele não gera gráficos de boa qualidade visual quando impressos.

A solução é bem simples:

No LTspice desenhe o circuito, simule etc... Selecione o gráfico, mande File/Export para gerar um .txt, selecionem os sinais a serem armazenados no arquivo. Como exemplo usei o circuito abaixo e fiz uma análise CC, variando V1 e medindo a tensão antes dos diodos:



Vou chamar esses resultados de diodo.txt. O LTspice gera um arquivo delimitado por tabulações. Agora, para ler em Python, eu poderia usar a biblioteca csv, mas existe uma forma mais pythônica de ler esses dados e plotá-los: usando a função loadtxt da biblioteca NumPy.

Os parâmetros dessa são:
  • fname: nome do arquivo
  • dtype: tipo de dados esperado
  • delimiter: separador
  • skiprows: quantas linhas pular no começo
  • usecols: uma tupla que permite especificar as colunas que queremos pular
A partir daqui ficou óbvio do que precisamos: da fname e da skiprows (a primeira linha é cabeçalho). Assim, teremos o código a seguir:
(se não abrir: https://gist.github.com/renanbirck/4743036)

Ele pode ser usado com o arquivo diodo.txt que forneço de exemplo (aviso: 4 MB. Clique com o botão direito e mande salvar para o seu browser não sentar)

Obteremos isso:


Podemos mexer na legenda, etc etc... mas cheguei ao que eu queria demonstrar.

E agora, já que temos esses dados, podemos ajustar eles a um modelo. Visualmente, nota-se que eles parecem com uma tangente hiperbólica. Assim, façamos um modelo do tipo

e usaremos o método dos mínimos quadrados para ajustá-lo a uma função desse tipo (poderíamos usar qualquer outro método de otimização). O código então tornar-se-á:
(se não abrir: https://gist.github.com/renanbirck/4743133)

Após executarmos, obtemos o gráfico:


Como queríamos demonstrar, obtivemos um bom ajuste. O modelo é bem adequado; para visualizarmos os parâmetros bastaria um print p no final do código.

E nem doeu: foram exemplos adaptados do que eu encontrei na documentação do SciPy. :)

Quanto ao desempenho, a leitura dos dados leva 2 segundos, e o ajuste cerca de 15 segundos num i7-2670QM, mas isso pode (e vai) variar dependendo do chute inicial; para um trabalho mais avançado seria interessante e necessário fazer um meta-ajuste.

segunda-feira, 24 de dezembro de 2012

Por que eu realmente não gosto do MATLAB

Acredito que todos que me conhecem saibam que eu realmente não gosto do MATLAB e já tenham me ouvido expressar meu desprezo por ele. Não deveria (afinal, ele é o ganha-pão da área onde eu trabalho), mas deixo isso bem claro toda vez que eu falo sobre ele. Vamos a alguns motivos:

Primeiro: a linguagem dele é péssima, tanto é que surgiram infinitos 'hacks' em cima. Impossibilita código limpo, por não ter coisas como uma boa implementação de argumentos nomeados, namespaces e uma orientação a objetos de verdade.

E por sinal, uma das maiores (na minha opinião) abominações é que o arquivo de código (.m) precisa mandatoriamente ter o mesmo nome da primeira função neste presente. Porque aparentemente includes são luxo: imaginem uma linguagem C onde em vez de stdio.h tivéssemos printf.h, scanf.h, etc...? Legal, só que não.

Segundo:
ambiente proprietário, bugado, com pouca integração com o resto do sistema, lento (quem foi o jênio que teve a ideia de que Java era uma boa ideia? Qual o problema com C/GTK ou C++/Qt?) e limitadíssimo. Várias vezes ele simplesmente acusou um fatal error no meio do trabalho e depois fechou.

Terceiro: limitações imbecis. Outro dia eu implementei um algoritmo que beneficiaria extremamente de processamento paralelo (tenho um i7, e não é justo que eu só consiga ocupar um dos núcleos). Para isso existe a toolbox de processamento paralelo do MATLAB, mas adivinhem a limitação completamente burra que existe: um "for" paralelizado só funciona quando o iterador é inteiro.

Tirando da própria documentação dele:

parfor loopvar = initval:endval, statements, end allows you to write a loops for a statement or block of code that executes in parallel  [....] initval and endval must evaluate to finite integer values [...].

Em tradução livre: parfor var_loop = val_inicial:val_fim, comandos, end" permitem você escrever um loop para um conjunto de comandos que executa em paralelo [....] val_inicial e val_fim precisam ser números inteiros [...] (grifo meu)

Sim, é isso mesmo: ou o loop só itera sobre números inteiros ou eu subutilizo minha CPU. Uma limitação totalmente arbitrária. Claro que vão aparecer gambiarras diversas para contornar a limitação: sinal de um sistema mal-projetado.

E principalmente: a maioria das pessoas usa ele por não ter que comprar a licença (afinal, tem no Pirate Bay ou é só pedir o DVD pra um dos colegas). Se tivessem que pagar por cada toolbox  - não, ele não vem com esse monte de toolboxes (eu queria ver o custo de cada uma, mas preciso preencher um cadastro que realmente não estou animado a fazer) - queria ver se existiria tanta babação de ovo em cima dele. Queria ver se professores iriam montar cursos inteiros em cima dele, ou se haveria tanta gente usando ele para mestrados e doutorados.

Aliás, queria ver se o pessoal ia defender software proprietário tão descaradamente e ia ficar nessa preguiça de procurar alternativas se não fosse fácil assim piratear. Mas isso é assunto para outro post. Lembrem, enquanto isso, das discussões sobre a necessidade de fazer ciência com software livre e formatos abertos.

Existe a versão para estudante? Sim, que é uma piada de mau gosto: limitadíssima. Só 32-bit (quase em 2013, quando qualquer computador atual já vem com SO 64-bit) e com recursos desativados. Comparar com a versão para estudante do Mathematica: nenhuma limitação técnica - apenas restrições contratuais de uso (não pode explorar comercialmente, precisa fornecer comprovante de que é estudante etc...).

Quanto à questão das licenças, podem me perguntar: e o Octave? e o Scilab?. Ambos imitações que copiam os vícios da linguagem de inspiração. Imitar uma coisa ruim torna a imitação igualmente ruim - se não pior.

Enquanto isso, fico com o Python e a comunidade fantástica que existe ao redor dele. Se eu tiver que usar um software científico proprietário, fico com o Mathematica - que, apesar da estranheza da linguagem, entrega muito mais valor pelo mesmo preço (várias das toolboxes que são opcionais no MATLAB estão incluídas por padrão nele). Minha 'loja' de toolboxes é o PyPI, o GitHub etc...  Considere o Python para seu próximo projeto, não dói nada (principalmente para quem vem do MATLAB: a NumPy, SciPy etc... são projetadas para fornecerem um ambiente de fácil adaptação).

PS: no quarto parágrafo, a escrita errada de jênio foi intencional.

domingo, 9 de dezembro de 2012

Como ser sem-noção ou mal-intencionado mesmo: o caso Tecnomania

Todo mundo já conhece a Tecnomania, da gloriosa Tekpix, a excelente câmera que ninguém tem, ninguém nunca viu e que tem lentes de diamante, processador de imagens com tecnologia da NASA e cartão de memória quântico de 216.5 TB, podendo fotografar o invisível e ser tão ou mais poderosa que o Hubble e um microscópio de elétrons ao mesmo tempo  - isso justifica o preço de mais de R$ 3500.


Mas eles não se restringem a isso: já pensou em comprar um tablet Android genérico pelo preço de 2 iPads? Eles vendem. Um tablet de 7", com recursos tão avançados quanto os de 'relógio' e 'configurações'.

  
Para comparação, o preço do iPad mais caro disponível no Brasil, na mesma data era de R$ 1999:





Acho que eles tomaram umas lições com a unidade brasileira da Apple, com a diferença que o produto deles não pode nem ser chamado de Héppow. Provavelmente é um tablet genérico, desses que se encontra às pencas na China e que custa US$ 40~60 no atacado:



Ainda não está satisfeito? Você pode comprar um cartão SD de 2 GB por R$ 299. Excelente compra, não? Vendo os cartões de 2 GB que eu tenho aqui na gaveta por R$ 100, cobrindo o preço da concorrência!

Sem falar nos outros produtos disponíveis na loja, todos com um preço que passa longe de ser minimamente coerente. Como exemplo, temos esse forno elétrico, que custa US$ 170 na Amazon e R$ 1600 na Tecnomania. Não sabia que R$ 10 = US$ 1 (chamaram a hiperinflação de volta pro poder?).

Fico pensando onde eles querem chegar com isso. Como não é ideal atribuir à malícia aquilo que pode ser explicado pela ignorância (a navalha de Hanlon), prefiro acreditar que eles querem fisgar o babaca que lê em 12 vezes sem juros e sai correndo comprar, ou que simplesmente são pseudo-vendedores burros esperando a ignorância de alguém?

Realmente existem otários a dar com pau (nos múltiplos sentidos) por aí; de outra forma, o que justificaria tudo isso?



Já que eu falei em Tekpix, aprenda a usar a sua com esse vídeo da Rede 2112 de Colaboradores:


E eles que se atrevam a deletar os produtos do site... tenho ibagens de todas essas páginas guardadas aqui e vou fazer questão de publicar elas em todas as formas.

domingo, 2 de dezembro de 2012

IPython: notebook e Qt Console

O IPython já é velho conhecido de quem desenvolve em Python, dispensa introduções etc... Mas outro recurso interessante, e que ainda não é muito explorado, é o recurso de notebook: um caderno onde se pode desenvolver de forma interativa.

Ele é igual a ideia dos notebooks, worksheets etc... para quem já usou o Mathematica, o Sage ou outros softwares matemáticos: um documento que concentra todo o código-fonte, junto (ou não) com a descrição e/ou a documentação dele.

Para usá-lo? Simples: digite ipython notebook --pylab inline no terminal, e pronto, vai abrir uma janela do seu browser. Daí é só criar um novo notebook.

Todos os recursos do IPython estão disponíveis (exceto o %debug, que requer uma interatividade que o 'notebook' ainda não suporta). E inclusive é possível embutir vídeos, imagens etc... dentro do documento! Excelente para a geração de aulas, tutoriais, e outras coisas que não são tão práticas de fazer com outros softwares (inclusive certos softwares proprietários :)

Ele também se demonstra um ótimo ambiente para trabalhar com Octave, R, etc... ou (para quem gosta - acho que todos sabem que eu não faço parte dessa estatística) com o MATLAB, através das extensões do IPython.

Outra vantagem, que eu não explorei, é a execução dele num servidor dedicado ou na nuvem: tchau à necessidade de instalar uma cópia do ambiente em cada máquina, basta ter um browser razoavelmente atual e pronto.

Uma possibilidade final que o IPython fornece é executar em um 'terminal gráfico' em Qt, usando o comando ipython2 qtconsole --pylab inline. Essa é mais interessante para scripts que executem e forneçam seus resultados de forma visual.