sexta-feira, 24 de outubro de 2008

Quando as coisas correm mal... no Vista



Há muita gente a dizer mal do Vista. Eu acho que, antes de mais, foi um passo maior do que a perna.

A verdade é que faz (muito) mais coisas. Mas muitas dessas coisas novas são um aborrecimento.

E há outras que funcionam mesmo pior. Como o Explorador do Windows, que agora de vez em quando estoura.

Há mínimos. Ou não há? ;-)

quarta-feira, 15 de outubro de 2008

Sistemas Operativos - para quê?

No conjunto das coisas-que-existem-na-informática-que-na-minha-opinião-que-vale-o-que-vale-não-deviam-existir, em meio a utilizadores, gestores de projecto, bases-de-dados relacionais, frameworks e quejandos, existe uma que nunca tinha referido antes - Sistemas Operativos.

Há muito muito tempo, "more time then I care to remember" como dizia a canção, comecei eu a trabalhar num computador todo jeitoso que na altura era o "state of the art" da indústria, inventado por quem inventou os computadores como os conhecemos hoje. Toda a gente sabe de quem falo - a Xerox, claro está.

Essa maravilha tecnológica chamada Xerox 820-II corria em CP/M, produzido por uma companhia chamada Digital Research que mais tarde ficou tristemente célebre por ter "perdido" o contrato de fornecimento à IBM do sistema operativo para os IBM-PC para o então pouco famoso Bill Gates que soube aproveitar da melhor maneira o facto da sua mãe pertencer ao conselho administrativo de uma instituição de caridade onde também tinha assento o então presidente da... IBM!!! Mas enfim,isso é (outra) história...

Mas, dizia eu, o CP/M era muito bonzinho para trabalhar, uma "footprint" de memória baixíssima (que remédio, pois se não havia memória...), simples o suficiente para, por exemplo, escrever "device drivers" e pequenos utilitários em Assembler praticamente só usando as "system calls" do CP/M (a propósito, fazendo o mesmo em MS-DOS bem que reparei na altura que 80 ou 90% dos System Calls eram iguais).

E o que era melhor, ligava-se o computador e demorava talvez um segundo a carregar todo o OS, desligava-se o computador sem ter cá "shutdowns", fazia-se CTRL+ESC para fazer reboot quase instantâneo. E podia-se correr tudo o que se quisesse em Debug... Incluindo o próprio CP/M. Claro que está que conseguir perceber o programa só olhando para código assemblado e o os registos da CPU era obra...

Mas ainda mais importante, a sua simplicidade permitia compreender o funcionamento do computador, permitia entender directamente essa relação equivoca de software com hardware, entre aquilo que nós como programadores escrevemos e aquilo que a máquina faz ao nível do processador.

Ora eu não defendo que para programar em linguagens de alto nível o programador tenha que necessariamente saber o que se passa a baixo nível, até ao nível do hardware. Aliás, acho que os computadores só marginalmente estão relacionados com a Informática. No entanto, dado que eles são parte integrante do corrente estádio evolutivo da indústria, perceber o que fazem a baixo nível é muito útil seja a que nível se esteja a trabalhar. E eu sou uma pessoa tipicamente de baixo nível...

Bom, mas sendo pequeno é no entanto um OS, e eu comecei por dizer eles que nem deviam existir... É um exagero, claro, só para marcar o meu ponto. Um OS é uma conveniência, às vezes inconveniente. O problema é que quanto maior se torna OS maiores se tornam os inconvenientes, porque cada vez temos um OS "one-size-fit-all", que pode ser bom para a maioria da situações mas que vão sendo cada vez piores quanto mais específicos são os problemas que tentamos resolver. E porque cava-se um fosso cada vez maior entre OS (que é software) e o restante "software aplicacional" que tem que depender daquele, mas que deve ser moldado não às capacidades permitidas pelo OS mas às necessidades do nosso problema.

Idealmente, devíamos ter uma "separação" de níveis somente entre hardware e software , e o que se vê é existirem cada vez mais níveis de separação (que por si só constituem pontos de falha) tal como em HW, OS e SW.

Imaginem em desenvolvimento de software para sistemas críticos como equipamentos hospitalares, aeronáuticos/espaciais, militares e outros, a enorme vantagem que não é poder fazer "debug" de toda a aplicação desde o UI ou outra qualquer fonte de input de dados até a ultima instrução que age directamente sobre o hardware, seja abrir a válvula do oxigénio ao paciente que sufoca, abrir só mais uns milímetros o flap do avião que está em rota de colisão com o nosso, fazer com que o giroscópio na cabeça do míssil alinhe com a gruta onde esta o Bin Laden e não com a casa 500 metros ao lado onde uma família de 150 pessoas está a fazer a festa do primeiro aniversário do mais recente rebento...

Ter todo o software escrito na mesma plataforma/linguagem, de modo a não haver diferenças entre OS e SW aplicacional, parece ser uma ideia boa em teoria, mas funcionará na pratica?

Squeak

Squeak é uma implementação de Smalltalk que corre sobre uma VM que é ela própria escrita em Smalltalk. Foi inventada pelos meus ex-colegas da Xerox PARC, os tais que inventaram o computador como o conhecemos (eu trabalhava na Xerox quando a sede era ali no Parque Eduardo VII, de modos que PARC / Parque, fomos praticamente colegas -- que piada tão gira, não é?) .

SqueakNOS

SqueakNOS é uma tentativa de reduzir ainda mais a dependência de OS do Sqweak, na pratica para 99.9% Smalltalk, 1400 linhas de C e 60 de Assembler.

Squawk

Squawk é uma iniciativa que pretende fazer o mesmo com a JVM que o Squeak fez com o Smalltalk, ou seja, reduzir o mais possível a dependência entre a JVM e o OS.


Bom, para tornar curta uma história longa e antes que mandem dar uma volta larga num cais pequeno, é minha opinião, que mais uma vez repito vale o que vale, que seria de todo conveniente que existissem não um ou dois ou três grandes sistemas operativos mas sim uma grande numero deles, um vasto numero, escritos para casos específicos e de preferência na mesma linguagem das aplicações que vai suportar. Que é como quem diz, não haver OS algum...

Como dizia o outro, isso de ter o OS separado do SW está muito bem na pratica, mas funcionará em teoria?



Bom, e que tal acabarmos com uma músiquinha? Não? Então vamos lá...

Para não roubar largura de banda a outros blogs, podem ouvir (e fazer o download, ler a letra e ver ao vivo) esta música intitulada Every OS Sucks, e que como podem ver pelo refrão simboliza perfeitamente senão o conteúdo, ao menos o espírito deste "post".

Every OS wastes your time,
from the desktop to the lap,
Everything since Apple Dos,
Just a bunch of crap.

From Microsoft, to Macintosh,
to Lin– line– lin– lie… nux,
Every computer crashes,
’cause every OS sucks.

Referências:
http://www.artima.com/weblogs/viewpost.jsp?thread=239339
http://blogs.oreilly.com/digitalmedia/2005/10/we-dont-need-no-stinkin-os.html

terça-feira, 14 de outubro de 2008

OpenOffice 3.0


Já saiu a versão 3.0 do open office.
Está disponível para windows, Linux e Mac OS X.
O lançamento foi conjunto para os principais idiomas. Infelizmente o nosso Português Europeu não aparece na lista.

O sucesso foi tal que o site do openoffice ficou muito instável (praticamente sempre indisponível) :-( .
Ando desde ontem a tentar fazer o download e não consigo. O melhor é usar o download com um P2P.
Na próxima vez convém estarem mais preparados para uma enorme quantidade de downloads e acessos (se perguntarem à mozilla que eles ensinam).

Quanto às primeiras impressões....só depois de conseguir experimentar.


sexta-feira, 10 de outubro de 2008

Apoio na utilização de Alfresco e Roadshow

O Alfresco é um excelente sistema de gestão documental em open-source baseado em tecnologias Java, que já aqui foi referido antes.

Como muitos projectos open-source actuais, o Alfresco é gerido por uma entidade comercial - a Alfresco Inc. - que presta serviços profissionais sobre o produto. Mas a grande virtude do modelo de código aberto/livre é que os utilizadores podem decidir se querem ou não pagar esses serviços. É que, para além do fabricante, há sempre uma Comunidade que pode ajudar.

Naturalmente, o fornecedor tecnicamente mais apto para prestar serviços sobre o produto será geralmente a companhia que o desenvolve. No entanto, há outros factores importantes a considerar para além da especialização técnica, nomeadamente a proximidade geográfica e cultural, a rapidez e abrangência da resposta (que acontece quando o problema está noutro componente do sistema?) e, claro, o preço.

No que diz respeito ao Alfresco, o utilizador tem três alternativas diferentes para obter apoio:
  1. Recorrer à Comunidade, através do site ou dos fóruns, a forma mais económica
  2. Recorrer a serviços profissionais dentro da Comunidade
  3. Recorrer à Alfresco e seus parceiros locais
Estas três alternativas (que nem sequer são mutuamente exclusivas) demonstram bem o grande factor concorrencial do modelo do software livre: a escolha. O utilizador pode escolher o fornecedor de acordo com as suas necessidades e expectativas. E também de acordo com o seu orçamento.

Vem isto a propósito de um evento que vai ocorrer no próximo dia 23 de Outubro. A Alfresco Ibérica vai organizar (com o apoio de um dos partners oficiais portugueses) uma sessão informativa sobre o produto, os serviços e a comunidade que o rodeia. A sessão decorrerá de manhã, no antigo edifício da Bolsa, em Lisboa.

A agenda e as inscrições podem ser encontradas aqui.

terça-feira, 7 de outubro de 2008

Carreiras

Conhecem decerto o site ActiveTechPros, onde podemos constatar a miséria que os nossos patrões nos pagam, e comparar com a miséria que outros ganham por esse mundo fora.

Só pra chatear aqui ficam os números de alguns países. Quem diria que aqui na Doce e Verde Irlanda se ganha mais do que na Velha Albion! Era como se em Portugal se ganhasse mais do que em Espanha...

Média em k€ para System Developers

Portugal: 21 (334)
Espanha: 31 (256)
Irlanda: 49 (146)
UK: 48 (1235)
USA: 56 (244)

idem, para Project Managers

Portugal: 36 (185)
Espanha: 46 (250)
Irlanda: 65 (46)
UK: 63 (461)
USA: 66 (100)

Da mesma fonte surgiu agora um relatório - Portugal IT Salary & Skills Snapshot 2008 - que revela números semelhantes - 24k para System Developers, 39k para Project Managers, num universo de 399 respondentes de entre os quais 152 pessoas são PM's e 115 trabalham. :)

Agora, eu nao tenho nada contra essa tão nobre classe profissional, se bem que, tal como na estória do "C-Monkey", eu nunca os tenha visto a fazer nada, ou como dizia o outro, "eles falam falam falam falam falam falam falam, mas eu nunca os vi a fazer nada!!!"

Mas agora a sério, eu sei por experiência própria que PM é um trabalho chato, burocrático, "pesado", e eu não o faria nem que me pagassem 39k (ou 65k no meu caso), mas o que acho é que em Portugal são muito poucos os Project Managers que o são por "vocação", que têm "paixão", que são capazes de ficar até às tantas da manhã a fazer, bem, não sei ao certo, aquilo que os PM's fazem...

Pelo contrário, conheço muitos, muitíssimos programadores que possuem essa "chama" que os fazem trabalhar horas a fio, as mais das vezes mal pagos, às vezes a resolver coisas "impossíveis" (que por acaso é o que mais gozo dá) e que se calhar chegam a casa e ainda vão para o computador ver as últimas.

Acho que infelizmente quem vai para PM são pessoas que passam pela programação e, devido à falta dessa paixão, e não quero ser injusto dizendo de capacidade, optam por seguir a via mais fácil e que ainda por cima é (será?) em média mais bem remunerada, e em vez de se andarem a chatear com a chatice da programação, passam a chatear... os programadores!

Porque, ao fim ao cabo, o PM quer mensurar o imensurável, quer meter o Rossio na Rua da Betesga, quer saber o que o principio da incerteza do projecto não permite saber. Quer-nos fazer crer que "não devemos reinventar a roda" - como se os F1 usassem rodas de carroça - quando reinventar a roda é a mais das vezes útil - torna-nos melhores programadores enquanto indivíduos e é a melhor forma de obtermos vantagem concorrencial sobre os nossos competidores enquanto empresas.

Notem que não quero generalizar, até porque em geral é perigoso generalizar, e estou certo que existem muitos e bons profissionais nessa área. Mas ninguém me tira da ideia de que PM's são um dos "males necessários" da Ciência da Informação, tal como, entre outros, os utilizadores e os computadores...

Com tudo isto, pretendo dizer que uma "carreira" como programador é o caminho a seguir por quem "gosta" disto, é uma parvoice tentar seguir o caminho do "management" só porque isso é visto como uma "subida" na carreira, porque o Project Manager ganha mais dinheiro, porque o programador nos tempos que correm é visto já como uma entidade "inferior", ninguem se chama hoje a si próprio "programador" mas "software engineer", "systems architect", "solutions designer" (ou qualquer destas designações em diferentes combinações), toda a gente é sénior com um ano de experiência, e até já existem "consultores juniores", o que me parece a mim uma contradição nos termos.

Pera lá, mas o "ganha mais dinheiro" faz jeito, ou nao? É uma falsa questão. Ninguém ganha mais dinheiro porque "é" isto ou "é" aquilo. Ganha-se mais dinheiro porque se é bom a fazer as coisas que se fazem. Porque o nosso trabalho pode fazer a diferença, especialmente num mercado tão competitivo como IT.

E acreditem, no final é o programador que faz a diferença, não o gestor de projectos...



quinta-feira, 2 de outubro de 2008

Comportamento de risco


Dariam a chave da vossa casa ao arrumador de carros da vossa rua? Se têm algum apreço pela casa e o que têm lá dentro, provavelmente não.

Há muitas pessoas que metem estranhos em casa e nem sequer se apercebem disso. Fazem-no instalando software de origens incertas no seu PC, sem terem a mínima certeza de que os programas fazem o que prometem, e sem verificarem minimamente a credibilidade de quem o produziu.

A diferença entre uma página web e um programa que se tira da web

Uma página web, mesmo que tenha alguns componentes animados, está quase sempre isolada dentro do browser web (Firefox, Internet Explorer, etc.), pelo que não pode aceder a recursos do PC como sejam a webcam, o teclado ou o écran. Mas muitas páginas web permitem fazer download de programas, que a seguir podem ser instalados no computador com um mínimo de esforço e quase automaticamente.

Aí é que começa o comportamento de risco. Ao instalar o programa que se acabou de descarregar, por mais legal ou gratuito que este seja, estamos a arriscar a integridade dos nossos dados e a segurança do nosso computador. Os programas instaláveis acedem a quase todos os recursos da máquina com as mesmas permissões que o utilizador tem. Isto é agravado pelo facto de a maior parte dos utilizadores
trabalharem nos seus PCs como "Administradores", com permissões máximas. Um programa mal intencionado pode, por exemplo, aceder à nossa webcam e recolher fotos da nossa casa. Ou pode fingir que se deixa fechar mas ficar residente em memória a recolher dados sobre as passwords que nós usamos para aceder ao nosso banco via web.

É por isso que todos os browsers, antes de executarem qualquer programa acabado de descarregar da net, perguntam ao utilizador se quer mesmo seguir em frente. E, se não tivermos a certeza de que o fornecedor do software é de confiança, o que devemos fazer é mesmo não deixar executar o programa, por mais atraente que ele nos tenha parecido.


A ilusão dos antivírus

Muita gente sente-se descansada porque tem um antivírus actualizado. Mas isso não é garantia significativa contra programas mal intencionados, por uma razão fácil de compreender. As companhias de antivirus só conseguem defender-nos de vírus muito divulgados, porque são fáceis de descobrir e analisar. Mas por cada vírus ou troiano que é detectado poderá haver um que não o é, e provavelmente nunca vamos sabê-lo. Se instalamos com frequência software duvidoso, aumenta o risco de instalarmos também um troiano não conhecido.

Software crackado, o que é, quem o fez

Um dos maiores sucessos dos downloads de software são os programas "crackados". Não é difícil encontrar na net versões do Windows, do Office, ou do Photoshop, aparentemente iguais às originais mas sem as protecções contra cópia que os fabricantes lhes instalaram. Estas versões adulteradas são bastante atractivas para o utilizador que tem um orçamento curto. O problema é que ninguém pode ter a garantia que o cracker que adulterou o software só o fez com boas intenções e só desligou mesmo a protecção do fabricante. Ponham-se no lugar de um tipo esperto, que sabe o suficiente de programação para adulterar um Windows: não se sentiriam tentados em explorar a ganância das pessoas em vosso proveito? Não há aquele ditado que diz "ladrão que rouba ladrão..."?

Software proprietário grátis, a que propósito?

Não é difícil acreditar que algum do software grátis que há por aí na net seja feito com boas intenções por gente que quer partilhar os benefícios daquilo que sabe fazer. Mas estes casos serão, cada vez mais, uma minoria.

Quando encontrarem um software grátis, perguntem-se: "como é que este tipo paga a comida e a renda da casa?" se conseguirem uma resposta satisfatória, força, arrisquem e instalem o software no vosso PC. Por exemplo: os programadores de software livre oferecem gratuitamente o resultado do seu trabalho para quem o quiser. Mas, frequentemente, estes programadores são pagos por empresas que precisam do software e que estão dispostas a pagar o seu desenvolvimento, não exigindo que seja para seu uso exclusivo (há até vantagens em ter mais utilizadores do mesmo software, porque facilita a manutenção e a assistência técnica). Mas se o programa que vos apetece instalar não tem código-fonte disponível e o programador não vos pede dinheiro pela utilização do software, desconfiem. É possível que ele procure receitas por outro modo... à vossa custa.

Não é coisa que se recomende a um amigo

Por estas e por outras, a instalação de software que vamos buscar à net é uma coisa cada vez mais arriscada. E não é coisa que queiramos fazer ou que recomendemos aos amigos.

Faz-me alguma impressão ver por aí escrito "vai a tal sítio e descarrega aquele programa que é muita fixe, faz isto e aquilo". E até já ouvi este género de coisas em programas de rádio feitos por gente esclarecida em termos informáticos. Nesses casos penso logo: quem é que fez este programa? Não será algum rapazola com educação informática, ao serviço de uma máfia qualquer, que anda a fazer isto para conseguir entrar na minha máquina?


O risco para as empresas

As empresas que permitem aos seus colaboradores fazer downloads e instalações de software da net estão a arriscar muito mais do que o indivíduo que, em casa, faz o mesmo. Uma máquina "infectada" ou comprometida, no meio de uma rede local de uma empresa, pode ser uma porta de entrada para o mafioso que está no outro lado do mundo à procura de dados bancários ou a fazer espionagem industrial. E os colaboradores que assumem esses riscos devem recordar-se que não só estão a pôr em causa as suas informações mas também toda a rede da sua empresa. No mínimo, arriscam-se a parar a empresa com uma infecção de vírus novos ou um ataque de "denial of service". No pior cenário pode haver perdas de dados ou roubo de informação confidencial.

Não valerá a pena ter cuidado?



quarta-feira, 1 de outubro de 2008

Ahah!

Não consigo descrever como fiquei satisfeito ao ler a última newsletter do Javalobby ("Why is the default answer always a web app?"). Nela, o David Van Couvering questiona a criação sistemática de um "multi-tiered HTML/CSS/JavaScript monster" como resposta a qualquer problema. Em vez disso, ele defende Java Web Start, Swing, e Rich Internet Applications.

Como eu concordo com ele...

Aqui há mais de um ano, quando a Sun anunciou que ia "libertar" o Java, comecei a escrever um artigo cujo título era "Ajax Nonsense, Open Source Java and the return of the Applet". O Sérgio Ferreira convenceu-me que não valia a pena insistir porque AJAX era o que os clientes queriam e por isso não havia nada a fazer. E, como eu tinha mais que fazer, o artigo nunca foi acabado.

Entretanto, a Sun lançou o projecto JavaFX, que mais não é do que o Retorno do Applet. ;-)

E a malta começa a questionar-se, finalmente, se não será demasiado pouco aquilo que se consegue fazer hoje em dia com as arquitecturas aplicacionais baseadas em HTML, Javascript e requests HTTP avulsos - a base do AJAX.

Até que enfim que começamos a repensar a produtividade do que andamos a construir! :-)