RSS .92| RSS 2.0| ATOM 0.3
  • Home
  • Artigos
  • Publicações
  • Apresentações
  • Interviews
  • Livros
  • Contact
  • About
  • Convertendo codificação de arquivos no Linux

    March 31st, 2009

    Típicos casos reais:

    iconv --from-code=ISO-8859-1 --to-code=UTF-8 ./oldfile.txt > ./newfile.txt
    
    iconv --from-code=UTF-8 --to-code=ISO-8859-1 ./oldfile.txt > ./newfile.txt

    It saves a lot of trouble ;)


    Qual é a sua motivação?

    March 30th, 2009

    “It was post-boom time. By that, Imean the DotCom bubble had burst. The IT sector’s lifestyle had gone from rock ’n’ roll to Holiday Inn lounge act, and it was showing in India as well.

    In fact, what I found was not an army of people, plotting to steal our comforts for themselves. Unlike their counterparts in the West, these people weren’t angry that they had to get a small television set or even that they might not be able to afford this month’s cable TV bill.

    These were sons and daughters who were scraping by, trying to raise money to support their parents and their spouses’ parents. These were mothers and fathers whose IT jobs meant the difference between really educating their children or sending them to a school from which the further educational options have a hard limit. They weren’t trying to steal the American dream. They were trying to squeeze a once-dry economy for a few drops of life-giving cash flow.

    A vibrant society of highly motivated and intelligent people existed here. And they weren’t playing for amenities; they were competing for the survival of their families. You can’t underestimate—or blame—someone with that kind of motivation.”

    Para quem não conhece, este trecho está no começo do excelente livro “My Job Went to India“, do Chad Fowler. O livro é muito interessante, e eu recomendo a todos, mas não é o tópico principal do que quero falar.

    Neste trecho, o autor fala da enorme motivação de profissionais indianos na luta por um emprego que teria pouca expressão nos Estados Unidos, mas é uma forma de trazer esperanças a uma família inteira na Índia. Um profissional nos Estados Unidos procuraria esse emprego como um quebra-galho até encontrar um melhor. O profissional indiano lutaria com todas as suas forças - como se fosse sua última chance no mundo - para sustentar e trazer esperanças a toda uma família, que vive com tanta dificuldade. Realmente complicado subestimar ou criticar alguém com esse tipo de motivação.

    A realidade é que o mercado de software é extremamente competitivo, e para chegar e se manter no topo não basta uma boa formação, não basta talento, e não basta só motivação. Claro que alguém forte nos 3 aspectos terá uma chance bem maior que a média de ter sucesso. Mas mesmo alguém que tenha uma boa base, talento e motivação terá que encontrar o caminho e as circunstâncias adequadas para se destacar.

    A principal característica que eu vejo nos indivíduos realmente bem-sucedidos é a ambição. A ambição fomenta a motivação, e te dá forças adicionais para continuar perseguindo seus objetivos mesmo quando você está cansado e as coisas não parecem muito bem.

    Um bom profissional com pouca ambição irá fazer o seu trabalho com capricho e cumprir com suas obrigações. Um bom profissional ambicioso sabe que “Poder não se dá, Poder se toma”. Se você fica esperando alguém te mandar fazer alguma coisa e esperando as decisões superiores se refletirem nas suas tarefas, provavelmente você está ou ficará estagnado em breve, e saia da frente, pois você será atropelado.

    Se um empreendedor não for ambicioso e não tiver visão de negócio, ele fracassará, e rápido. Um empregado fracassará também, mas lentamente. Ele pode se manter naquele emprego/cargo sem emoções durante anos. Talvez sem riscos, mas também sem grandes perspectivas de melhorar.

    Os caras que geram mais valor para as empresas não são os bons executores de ordens. O mercado tem espaço para eles também, mas premia de forma diferenciada os que agem como donos do negócio, mesmo que estejam em níveis hierárquicos muito abaixo dos donos.

    Já faz pelo menos 2 anos que eu não estudo e me preparo para ter empregabilidade. Eu entrego meu melhor esforço dia após dia porque eu sou MUITO ambicioso. Eu não quero ter um bom emprego. Eu quero gerar um enorme retorno para os clientes e para minha empresa, e ser premiado por isso.

    Eu não quero parecer um cara legal para meus chefes e conseguir um aumento porque eu cumpro com as minhas obrigações. Eu quero trazer tantos resultados positivos que o poder e o reconhecimento serão automáticos e rápidos. Eu não quero pedir para ser promovido ou reconhecido, eu quero deixar óbvio que o meu valor é grande demais para me sub-utilizarem.

    Além disso, não quero me restringir a satisfazer o sonho dos outros. Quero enxergar e explorar oportunidades de negócio próprias. Eu já tive um perfil “pesquisador e estudioso”, e aprendi e amadureci muito com essa postura. Mas hoje me vejo muito mais como um “realizador e empreendedor”, usando tecnologias para buscar resultados.

    Essa é a minha motivação, e eu estou com a faca nos dentes atrás dos meus objetivos. Quais são as suas motivações?


    As diferentes facetas de vendor lock-in

    March 26th, 2009

    Durante muito tempo trabalhei com desenvolvimento de software customizado, principalmente utilizando componentes open source. Nos últimos meses venho tendo uma experiência intensa com produtos comerciais, de código fechado.

    Uma questão muito importante no mercado de software é o lock-in de fornecedores, no qual os clientes às vezes se vêem obrigados a manter um fornecedor de software mesmo sem estarem satisfeitos com o serviço/produto oferecido. Discussões em torno disso são muito freqüentes quando comparamos o modelo de desenvolvimento customizado com o trabalho em torno de produtos.

    Além destas duas opções já antigas, há uma terceira na moda: Cloud Computing.

    Embora eu tenha certas preferências pessoais em alguns cenários, não aponto nenhum desses modelos como o mais indicado de uma maneira geral.

    Quando você compra serviços de software customizado, teoricamente o seu investimento inicial será mais baixo do que comprando um produto, mas deve-se avaliar o quão produtivo é o produto, o quanto de esforço você terá para desenvolver de forma customizada, qual é o “time-to-market” desejado, ROI, entre outros fatores. Isso varia demais de um tipo de projeto para o outro, e depende do grau de commoditização dos produtos e do conhecimento do domínio.

    Além destes fatores, o lock-in é uma característica importantíssima que deve estar sempre na cabeça das pessoas. Existe uma tendência a achar que o fato de você comprar software proprietário vai necessariamente te prender a um fornecedor. Dependendo do cenário realmente existe uma dificuldade enorme em trocar, mas em outros casos isso é bem mais tranqüilo.

    A questão é que com software customizado isso também ocorre muito. Software customizado pode amarrar o cliente até mais do que um produto comercial, dependendo de como for construído, e da participação do cliente no processo.

    Sobre Cloud Computing, existe uma enorme febre nesse momento. Todo mundo falando em colocar aplicações “na nuvem”, nos ganhos de custo-benefício, na escalabilidade, e muitas outras “ilidades”. A proposta realmente é tentadora. Você rodar suas aplicações numa infra-estrutura gerenciada por experts do Google, da Amazon ou da Sun parece um sonho realizado. Se você pensar que eles compram hardware muito mais barato que a gente e já têm enormes parques tecnológicos com capacidade ociosa, praticamente fica impossível argumentar contra isso.

    Para muitas empresas isso pode realmente fazer sentido. Colocar “na nuvem” serviços que não sejam muito críticos, para empresas de porte limitado. Agora, vamos pensar em empresas que já têm uma enorme gama de aplicações em produção, em datacenters existentes, com políticas de segurança, privacidade, etc.

    Será que seria fácil e conveniente ligar a sua empresa “na nuvem”, expondo vários dados críticos e sigilosos, e trazendo riscos de segurança para seu ambiente? Pensem num cliente que já tem um site, uma intranet, ERP, e várias outras aplicações em produção atendendo a fins distintos.

    Será que um diretor de tecnologia se sente seguro em abrir sua infra-estrutura para se integrar com redes, computadores e pessoas que ninguém sabe afirmar ao certo onde estão? Você teria certeza de que aqueles dcumentos valiosíssimos da sua proposta comercial não estariam acessíveis pelos concorrentes? Pense em quantas VPNs e configurações complexas de segurança seriam necessárias para adequação a esta nova topologia. Já não é tão sexy, não é mesmo?

    Além deste aspecto, o hype em torno de Cloud Computing é tão grande que já estão sendo discutidas possibilidades de interoperabilidades entre Clouds. O mercado ainda está longe de amadurecer, e já vemos discussões comuns em mercados consolidados. Do meu ponto de vista, Cloud Computing pode ser muito interessante, mas é necessário um grau de confiança no fornecedor em níveis que eu raras vezes vi entre pessoas, e muito menos entre empresas.

    Depois de tantos anos, comprar software continua muito difícil, e exige um conhecimento cada vez mais sofisticado. O segredo dos projetos melhor sucedidos que eu já vi é a parceria verdadeira entre os fornecedores e os clientes. Projetos de software que dão certo são os que têm pessoas competentes, bem intencionadas e ambiciosas em ambos os lados.

    Os melhores fornecedores de software aproveitam cada projeto para trazer o máximo ROI para o cliente, e então conquistar sua confiança e parceria para mais projetos no futuro. E os melhores clientes são os que agem como donos do negócio de suas empresas. Eles buscam todas as oportunidades de melhorar os resultados das empresas, e com isso alavancar suas próprias carreiras.

    A Concrete, modéstia à parte, é um baita fornecedor de software. E eu estou tendo a chance de atuar em projetos diferenciados e não há nada mais contagiante para um profissional de software. Estou tendo a chance e a responsabilidade de trazer resultados expressivos para a empresa, e se eu for realmente competente isso trará muitas vitórias para a empresa e para mim (bom, pelo menos eu espero.. :) ).

    Faca nos dentes, sempre em frente ;)


    Estamos contratando

    March 23rd, 2009

    Pessoal, a Concrete está novamente contratando. Estamos trabalhando com projetos muito interessantes de portais atualmente, e neste processo seletivo estamos com 2 vagas, conforme abaixo.

    Desenvolvedor Java (2 vagas)

    Fundamental:

    Experiência comprovada de pelo menos 4 anos de trabalho como programador/desenvolvedor de software.

    Java EE 5 e 6.

    JPA, Hibernate, Struts ou outro framework para web  em Java.

    Experiência de uso com alguns dos seguintes application servers: BEA Weblogic 9 ou 10, Jboss AS, Jetty, Apache Tomcat  e Geronimo.

    Conhecimento de banco de dados e mapeamento objeto-relacional (desejável).

    Inglês para leitura e estudo de material técnico.

    Comprometimento, concentração e auto-didatismo são valores extremamente importantes. Argumentação fundamentada .

    Desejável

    Graduação em Ciência da Computação, Engenharia da Computacão ou Informática

    Conhecimento e interesse em outras linguagens de programação é bastante apreciado: Python, Scala, Ruby, Rhino, Javascript, Perl, OCAML, Common Lisp

    Conhecimento de plataforma Linux

    Conhecimento em shellscripting para Unix/ Linux é bastante desejável.

    Os interessados devem enviar um e-mail com currículo para marcia.cataldi@concretesolutions.com.br com cópia para bruno.pereira@concretesolutions.com.br


    Migrando para REST: exposição de Recursos x exposição do domínio

    March 22nd, 2009

    Meus camaradas do ISP da Globo estão estudando a migração da arquitetura imperativa com EJBs para uma arquitetura RESTFul.

    Esta migração tem muitos aspectos semelhantes à que fizemos no time de cadastro/autenticação no ano passado, e eu já conversei algumas vezes com o pessoal do ISP sobre isso, pois conheço bem o domínio deles. Entretanto, o domínio do ISP é um pouco mais complexo que o do cadastro, e isso torna a modelagem de recursos um pouco mais sofisticada e interessante.

    O exemplo que vou descrever aqui é o do Comando CmdFinalizaCompra. Este Comando é invocado no final de qualquer operação do ISP que modifique a cesta de produtos/serviços do assinante. Pelo próprio nome, fica óbvio que ele foi constituído de maneira imperativa (”FazerEstaOperacao”), e o pessoal estava em dúvida sobre como redesenhar este modelo e colocá-lo num desenho declarativo, à maneira RESTFul.

    Vou mencionar resumidamente a estrutura de comunicação dos comandos do ISP para que o resto da discussão fique claro. Cada Comando é constituído de 2 classes Java. CmdNomeComando e CmdNomeComandoSrv. A primeira classe corresponde ao Comando do lado do cliente, e a segunda corresponde ao Comando do lado do servidor.

    Na execução do comando, o cliente invoca um EJB 2.1 stateless no servidor, e envia a classe CmdNomeComando serializada, via RMI. O servidor recebe a classe, deserializa-a, executa a operação em questão e retorna a classe novamente para o cliente, com ou sem modificações, dependendo do caso.

    Este modelo é semelhante à chamada de serviços SOAP, em que é invocada uma operação SOAP com um documento XML de entrada e alguma coisa na saída.

    Podemos ver a classe CmdNomeComando como o “parâmetro de entrada” da operação, e a classe CmdNomeComandoSrv como a implementação da operação em questão. Este exemplo do CmdFinalizaCompra envolve vários componentes do modelo do ISP. Não sei dos detalhes de cabeça, mas este processo envolve Assinante, Usuario, Produto, Promocao, Desconto e possivelmente mais alguns elementos do domínio.

    Assim, um objeto CmdFinalizaCompra é composto de vários objetos deste domínio. A dúvida deles é sobre a definição dos recursos neste contexto. É uma dúvida pertinente, pois isto foge bastante a um CRUD óbvio. Uma possibilidade de desenho definiria como recursos: Assinante, Usuario, Produto, Promocao e Desconto. Isto seria mapeável diretamente na implementação do domínio deles. O que vocês acham disso?

    Bom, não vejo nada errado em expor um recurso Assinante, outro Usuario, etc. Isto pode fazer sentido para outras “operações”, maravilha. Entretanto, para este caso isso levantou a seguinte dúvida para eles: “Eu vou ter que fazer vários POSTs para realizar a operação do CmdFinalizaCompra” ?

    Imagine a complexidade de garantir o sucesso transacional dos vários POSTs independentes que compõem esta operação! No universo WS-* existe o conceito chamado Orquestração, no qual um determinado componente agrega e invoca várias operações pequenas em uma única operação/transação. Utilizando nomes pomposos, isto seria um Proxy Service invocando alguns Business Services. Algum de vocês se sente tentado a usar esta abordagem? Eu não!

    O que eu sugiro neste exemplo é a criação de um recurso chamado Compra, que pode ser representado por um grafo sofisticado de objetos do domínio do ISP. Para substituir o CmdFinalizaCompra, eu vejo a criação de uma instância do recurso Compra, com todas as informações pertinentes à compra em questão. A criação deste recurso estaria associada a uma única transação, seja lá o que tenha que ser feito por baixo dos panos no servidor.

    Na implementação do servidor, eu vejo somente este POST sendo realizado. O cliente não precisa saber (e é melhor que não saiba) como é implementado o domínio no servidor. Ele precisa conhecer os recursos expostos, e como interagir com eles.

    Pense numa compra na Amazon, por exemplo. Eles poderiam expôr este mesmo recurso Compra que eu falei, que seria composto pelos produtos, pelo cliente e talvez a opção de pagamento.

    Isso seria exposto pelo recurso, mas dentro da Amazon uma compra poderia envolver N operações: reserva de estoque, criação de ordem de entrega, lançamento da cobrança, criação de comissão para o distribuidor, etc. O cliente do Recurso só conhece os detalhes do que foi exposto, e isso não implica em detalhes de implementação no servidor.

    Lembrem que um dos principais objetivos para uma arquitetura RESTFul é ter baixo acoplamento, então tenham a liberdade de modelar seu domínio e seus recursos como fizer mais sentido.


    Dá um ânimo revigorante quando…

    March 21st, 2009

    … você chega numa sexta-feira na Estação Carioca do Metrô Rio e se depara com jovens humildes e desfavorecidos entoando música clássica com violinos.

    Garotos de origem pobre e com dificuldades de acesso à cultura tocando música clássica me trazem uma alegria enorme. Quer dizer que ainda há esperança para a sobrevivência da música e cultura mesmo nas camadas de mais baixa renda da sociedade, e isso é muito bom.

    Eu consegui esquecer de muitas ocasiões em que cheguei ao metrô de Copacabana e encontrei hordas de funkeiros reproduzindo ruídos medonhos em seus celulares, em altos volumes. Sinceramente, não me incomodo com o fato de que as pessoas gostem de funk. Mas definitivamente não sou obrigado a compartilhar das mesmas predileções, então me desagrada o comportamento pervasivo dos fãs do gênero.

    Mas isso não importa, o que importa foi que cheguei na estação da Carioca sexta-feira de manhã e vi dois meninos pobres tocando “A Cavalgada das Valquírias” no violino, e com uma competência elogiável.

    Eu nunca dou dinheiro a quem vem fazer malabarismos com bolinhas de tênis quando estou dirigindo. A primeira coisa que penso é que esses malabaristas deviam estar estudando ou aprendendo uma profissão qualquer que lhes agrade.

    Se você quer receber uma doação minha, vá tocar música clássica no metrô da Carioca. É ali bem perto do Teatro Municipal, então torço muito para que outros se inspirem e aprendam a apreciar este tipo de música. Eu cansei de ver malabarismos nos sinais de trânsito, mas nunca cansarei de me satisfazer com a beleza da cultura alcançando todas as camadas da sociedade.


    Site da Concrete migrado para o Wordpress

    March 17th, 2009

    Foi para o ar na última sexta-feira o site da Concrete migrado para o Wordpress. Eu tinha feito a migração já em Dezembro, mas só contratamos a nova hospedagem recentemente e então na sexta-feira o domínio foi apontado para o novo endereço.

    Sobre a migração, foi muito fácil. O Wordpress é uma ótima ferramenta de blogs/sites e é muito fácil adaptar um site existente para o Wordpress. Contando as páginas do site em português e em inglês são cerca de 50 páginas, e foram cerca de 20 horas de trabalho no total. Agora todo o conteúdo do site é facilmente publicável e ficará mais mais fácil dar à Concrete uma presença adequada na web.

    Já havia um tempo que eu não estava satisfeito com o site da Concrete, e depois que saí da Globo.com e fui para a sede, ficou mais fácil resolver isso. Já conversamos sobre várias coisas que podem e devem melhorar, e em breve creio que estarei contente com o site.

    Duas coisas que não me agradam visualmente são a legibilidade do site e aquele menu em Flash, que é um limitador ao acesso. Vamos ajustar o visual do site para deixá-lo mais agradável para a leitura e retirar a navegação com Flash.

    Além da questão visual, o conteúdo técnico está muito defasado. A empresa tem feito muitos projetos interessantes e há vários novos cases de sucesso que precisam ser incluídos no site. Além disso, eu gostaria bastante de colocar algumas demonstrações do que temos feito. A inclusão deste tipo de conteúdo trará uma visão muito mais objetiva do que os clientes podem esperar de retorno ao contratar os serviços da empresa.

    Uma última adição importante será uma seção com conteúdo editorial de qualidade. Desde que saí da Globo.com estou atuando como consultor em projetos de pré-venda, e a maioria das coisas que eu poderia publicar fazem mais sentido que a Concrete publique. Assim, em breve eu recomendarei aos que se interessam pelos textos deste humilde autor que acompanhem também o site da Concrete :)

    A Concrete tem profissionais excepcionais e estou certo de que publicaremos conteúdo de alta qualidade na nossa área de atuação. As principais coisas com as quais estou envolvido atualmente são portais corporativos, aplicações colaborativas, BPM e integração de aplicações.

    À medida que as coisas forem progredindo no site e no meu trabalho, publicarei mais por aqui e no site da empresa.


  • rheumatoid arthritis medications
  • medicine for pets
  • natural treatments for insomnia
  • sleep disorder treatment
  • anti vomiting
  • blood sugars
  • generic reglan
  • pharmacy no prescription
  • drugs for sale
  • muscles human body
  • anabolic creatine
  • online diet meds
  • acne cure pills
  • cialis benefits
  • metronidazole dose
  • women body building
  • otc claritin
  • cetirizine drug
  • cialis 5mg
  • baby acne
  • lipitor use
  • throat gonorrhea
  • cheap phentermine without a prescription
  • how does viagra work?
  • valium high
  • chest pain symptoms
  • prescription drug store online
  • cheap pain meds
  • acne face medication
  • pet health websites
  • anxiety order
  • what is premature ejaculation
  • dog skin
  • hair loss drug
  • online paxil
  • coupon zantac
  • effects of folic acid
  • buy canada drugs
  • curing premature ejaculation
  • carisoprodol cheapest
  • side effects of cancer treatments
  • women heart attack
  • lowest price generic viagra
  • pet supplies plus
  • vitamin supplement ratings
  • diabetes treatment
  • zoloft discount
  • coupon claritin
  • women insomnia
  • buy aciphex
  • cialis on line
  • treatment for hepatitis b
  • order metformin online
  • cialis cheap cialis online
  • claritin allergies
  • mexico pharmacies
  • how to lower blood pressure
  • diclofenac tablet
  • ordering medications online
  • cancer drugs
  • diflucan purchase
  • how to get birth control
  • dog skin infection
  • lowering blood pressure naturally
  • clonazepam pharma
  • health products women
  • buy cialis
  • soma or valium
  • pre diabetes
  • side effects blood pressure tablets
  • discount pain relief
  • dog med
  • osteoporosis calcium drug
  • tramadol without a prescription
  • zoloft drug
  • treatment high blood pressure
  • sildenafil 100mg
  • discount herbals and vitamins
  • aricept generic
  • asthma information
  • bupropion anxiety
  • free acai
  • top hair loss
  • yeast diflucan
  • health care for dogs
  • green tea products
  • cheapest place to buy phentermine
  • canada pharmacy drug perscription
  • high cholesterol treatment
  • viagra free trial
  • cancer cure
  • treatment to stop smoking
  • arthritis pain medicine
  • buy vardenafil online
  • generic viagra generic
  • vitamin list
  • discount soma online
  • facial skin care products
  • buy vitamin supplement
  • cialis alternative
  • viagra for cheap
  • sildenafil
  • online diet drugs
  • online drug
  • benicar tablets
  • purchase medicine on line
  • what is ambien
  • online prescription drug
  • hair loss disease
  • medicine that prevents blood clots
  • antifungal drug
  • medicine for vomiting
  • how to take a beta-blocker
  • san diego soma
  • vascular edema
  • acne skin care treatment products
  • how does viagra work?
  • reduce blood pressure
  • phentermine with no prescription
  • chlamydia treatment online
  • buy levitra on-line
  • beta blocker uses
  • viagra fedex
  • giving cats pills
  • menopause natural treatment
  • oral fluconazole
  • stop smoking today
  • prescription pain medicines
  • menopause natural treatment
  • fda avandia
  • actonel dosage
  • haldol medication
  • how to burn fat
  • all natural antibiotics
  • healthy dog food recipe
  • reduce swelling methods
  • prescription drugs on line
  • drugs use in arthritis
  • weight loss meds on line
  • cheap weight loss
  • pain in chest
  • chlamydia treatment
  • acai cleanse
  • online pharmacies with no prescription needed
  • cancer medications
  • clomid dosage
  • generic pravachol
  • what pills look like phentermine
  • dosage of viagra
  • how to prevent pregnancy
  • treatment for cancer
  • buy generic cialis
  • when is viagra needed
  • no hangover
  • water pills
  • what is generic viagra
  • antianxiety
  • buy asthma meds
  • acyclovir information
  • bronchitis pregnancy
  • treatment for alzheimer's disease
  • medicine chlamydia
  • mail order medicine
  • new treatments for lung diseases
  • cheap pain pills
  • constipation large stool
  • hand pain
  • stopping hair loss
  • antibiotics diarrhea
  • medication without prescription
  • help for infertility
  • weight loss diet
  • body building diets
  • atenolol interaction
  • medical heart failure
  • small dog products
  • stress pills
  • singulair generic
  • what is heart failure
  • new diet pills
  • discount viagra generic
  • order alli
  • treatment for infant diarrhea
  • buy prescription medication online
  • insomnia disorders
  • medical treatments for acne
  • skin disorders in cats
  • zantac medication
  • antibiotics bactrim
  • high blood calcium levels
  • vitamin supplement store
  • jelly kamagra
  • stress drug
  • health products for men
  • health supplement woman
  • us online pharmacy
  • energy saving products
  • about zocor
  • high amount of acid in blood
  • malaria medicines
  • Bruno Pereira is Digg proof thanks to caching by WP Super Cache!