A última bicicleta que tinha tido foi há imenso tempo. Foi provavelmente a mesma bicicleta com que aprendi a andar, quando era puto, e que com o tempo e desuso foi enferrujando e lá está no que era o estábulo da minha casa na "terra" (no Painho, perto das Caldas da Rainha). Sempre foi uma actividade de que gostei bastante e infelizmente estive muito tempo sem andar de bicicleta regularmente. Ia alugando uma bicicleta e dando umas voltas de vez em quando, mas não é a mesma coisa. Há uns meses decidi-me a comprar uma bicicleta e lá o fiz. Voltar a andar de bicicleta foi espectacular. Entre passeios na ciclovia de Cais-do-Sodré/Belém com amigos no fim-de-semana, e idas solitárias ao Terreiro do Paço de vez em quando, só não andei de bicicleta em semanas em que o tempo estava mau demais para isso (e mesmo assim cheguei a apanhar uma molha numa vez que arriscámos a ciclovia num dia pouco acolhedor).
Há uns Domingos atrás fui com um amigo meu dar um pulo pelo FabriCamp Lx1, no Pavilhão dos Conhecimentos no Parque das Nações. Como o Parque das Nações é um sítio fixe para se andar de bicicleta, cada um de nós levou a sua para depois darmos uma volta. Depois de um pouco de passeio fomos ao Vasco da Gama, deixámos as bicicletas no parquezinho próprio que há para bicicletas em frente à entrada que dá para a estátua ferrugenta, e fomos jantar descansados. Quando chegámos, nenhuma das nossas bicicletas estava lá. A minha corrente estava cortada no chão e a corrente (mais grossa, com código, que estava também presa à minha bicicleta) do meu amigo nem vê-la.
Durante o FabriCamp as bicicletas ficaram duas horas presas individualmente a um caixote do lixo no meio do nada, onde poucas pessoas passam. Uma hora no sítio próprio para bicicletas num local com seguranças e pessoas constantemente a passar e são roubadas. Quando fomos para fazer queixa a uma das seguranças do Vasco da Gama: "Ah, isso não é nada connosco. O melhor é irem fazer queixa à polícia para eles depois verem o vídeo de vigilância e podem ter a sorte de a câmara ter apanhado os ladrões". Um ponto engraçado desta situação é que estávamos mais preocupados com as bicicletas nas duas horas que elas estiveram presas ao caixote do lixo do que no tempo que elas estiveram presas no parque de bicicletas.
Há aqui muita coisa que me deixa indignado. Primeiro de tudo há as bestas que roubaram as bicicletas. Segundo há os seguranças do centro comercial onde fui gastar dinheiro que não só não protegeram os interesses dos seus clientes, como também nada se importaram com o sucedido. Terceiro há a minha estupidez em não me aperceber do quão mau o sítio era na realidade para deixar uma bicicleta relativamente nova.
Há que dizer que tanto eu como o meu amigo fomos levados por um falso sentido de segurança. O sítio parecia adequadamente perto do Vasco da Gama para deixarmos as bicicletas. Assumimos que haveria alguma segurança no movimento constante de pessoas, que ninguém ia roubar bicicletas abertamente num sítio por onde está constantemente a passar gente. Assumimos que haveriam seguranças a passear por aquela zona. Se não tivéssemos assumido isto tudo e determinado que era um lugar perigoso para deixar as bicicletas, tínhamos ido embora para casa em vez de jantar no Vasco da Gama e ainda tínhamos as nossas bicicletas.
Em retrospectiva é óbvio porque é que uma hora ali no sítio próprio para bicicletas em frente ao Vasco da Gama foi mais perigoso para as bicicletas do que duas horas num sítio onde não passa ninguém, presas a um caixote do lixo frágil. Em ambos os sítios onde deixámos as bicicletas apenas as protegemos contra o gajo que vê uma bicicleta, pega nela e leva-a consigo. Para levar as bicicletas era preciso conseguir cortar as correntes e o transeunte que se depara com as bicicletas por acaso não anda com um alicate de corte no bolso para estas situações. Por outro lado, haver um sítio fixo onde as pessoas se sentem seguras para deixar as bicicletas delas, sem seguranças, abre portas a que pessoas mal intencionadas e melhor equipadas passem por lá com um alicate de corte, analisem se há alguma bicicleta que valha a pena roubar (mal protegida/relativamente boa), e pronto... Alguém fica sem bicicleta. Aparentemente isto é algo que acontece todas as semanas, segundo os polícias.
Acho que é uma falha enorme do Vasco da Gama providenciar aquele sítio onde se pode simplesmente ir roubar bicicletas. Em vez de estarem a oferecer aos seus clientes um sitio seguro onde deixar as bicicletas, estão a dar-lhes um falso sentido de segurança e a fazer com que mais bicicletas sejam roubadas, perdendo clientes. Eu, por exemplo, já sei que não vou jantar no Vasco da Gama depois de ir andar de bicicleta no Parque das Nações. Questiono-me porque é que não há um segurança ao pé do parque de bicicletas. Questiono-me porque é que as rondas da polícia não passam por lá com frequência o suficiente para desincentivar ladrões. Questiono-me porque é que, não havendo recursos humanos para impedir o roubo, não se tira aquele parque dali para não haver pessoas a deixar lá bicicletas que podem ser roubadas.
E assim, cerca de dois meses depois de a comprar, fiquei sem a minha bicicleta nova. Restam-me duas opções: baixar os braços e desistir de ter uma bicicleta, ou não deixar que um grupo de anormais me roube o prazer readquirido de andar de bicicleta. A escolha parece bastante simples, vou comprar uma bicicleta para substituir a que perdi e desta vez vou também comprar material para a prender que não só dê protecção contra o transeunte ocasional mas que também ofereça alguma segurança contra alicates de corte de tamanhos não industriais. E também vou ter bastante mais cuidado onde deixo a bicicleta e assegurar-me que o que assumo de segurança parece mais sólido.
O pior de tudo é que ainda há um outro grupo de idiotas que nada faz de concreto para impedir estas situações. Talvez o número de clientes que lá vai porque tem o parque para as bicicletas ainda compense financeiramente relativamente ao número de clientes que perdem porque permitiram que lhes roubassem as bicicletas. Eu acho inaceitável e por isso podem contar que não gastarei mais do meu dinheiro no Centro Comercial do Vasco da Gama enquanto este tipo de negligência existir.
Quase que sinto que fui directamente lesado pela administração do Vasco da Gama e que os devia responsabilizar legalmente pelo sucedido (talvez processando-os?). Vou tentar averiguar com pessoas mais conhecedoras da lei se teria hipótese ou se estas corporações são protegidas contra este tipo de negligência grosseira e danosa.
Sem garantia de divertimento, inteligência, regularidade, coerência ou até legibilidade.
14 de abril de 2011
3 de abril de 2011
Hibernar o Computador de Trabalho
Lá na Outsystems onde trabalho atribuíram-me um computador pessoal. Tal como eu, muitos dos engenheiros informáticos lá no cantinho da Engenharia usam um monstro da Dell para o seu trabalho diário. Nos cantinhos mais de marketing e vendas e do outro lado do edifício nos serviços (consultoria) a maioria tem computadores portáteis.
Nós trabalhamos com uma data de ferramentas, muitas delas pesadas (o Visual Studio, por exemplo) e de manhã costumava demorar bastante tempo a ligar o computador e ligar os programas todos. Por isso até há pouco tempo atrás o que eu fazia era deixar o computador ligado quando saía para que quando voltasse já tivesse o estaminé todo montado para poder começar a trabalhar sem grande demora. Tal como eu, bastantes dos meus colegas têm o hábito de deixar o computador ligado a noite toda para que quando chegam possam começar imediatamente a trabalhar.
O problema disto é que os computadores estão ligados a semana toda (24*7 = 168 horas) em vez de estarem ligados apenas as horas de trabalho (40 + 5 (almoço) = 45). Em vez de estarem ligados ~30% do tempo (45/168 ~ 0.27), os computadores estão ligados 100% do tempo. Suspeito que isto é sintomático não só na Outsystems mas que também aconteça em muitas outras empresas que trabalhem com computadores.
Para os trabalhadores é uma decisão aparentemente fácil de tomar: deixar os computadores ligados é relativamente simples e não lhes custa nada já que é a empresa quem paga a conta de electricidade. A questão é que custa: o desperdício energético não afecta só a conta de electricidade da empresa, afecta-nos a todos porque a energia é retirada dos recursos finitos do planeta que partilhamos. Quanto menos desperdiçarmos, melhor para todos.
Mas a solução para o dilema é simples. Há muito tempo que existe a possibilidade de hibernar um computador. Se em vez de deixar os computadores ligados quando saímos do emprego os hibernássemos poderíamos ter o melhor dos dois mundos: um espaço de trabalho preparado e igual ao que tínhamos no dia anterior e poupava-se energia.
Mas para isto haviam dois impedimentos. Sinceramente eu sempre tive a ideia de hibernar o meu computador, mas a opção para o fazer não aparecia no menu de desligar o computador. Além disso algumas pessoas deixam o computador ligado para que lhe possam aceder remotamente (através da VPN), caso seja necessário por alguma razão. Nem sempre precisam de aceder remotamente aos computadores, mas não podem sempre prever quando o vão querer fazer, por isso para jogar pelo seguro vão deixando os computadores ligados.
Em conversa com uma amiga minha descobri que afinal até dá para hibernar desktops com Windows (não me aparecia a opção, portanto imaginei que o windows para desktops não viesse com isso ou qualquer coisa parva do género). Seguindo as instruções neste site (principalmente a parte de desactivar o sonho híbrido), lá consegui que a opção aparecesse, configurei o windows para hibernar quando carregasse no botão da energia e assim tenho uma maneira rápida de hibernar o computador antes de ir para casa.
Mas a minha ideia era mais do que apenas eu hibernar o meu computador. A minha ideia era convencer toda a gente lá do cantinho de I&D (Investigação e Desenvolvimento) da Outsystems a fazer o mesmo com os computadores deles. Para isso precisava de oferecer uma solução para a questão do acesso remoto. Relembro que estando o computador desligado não é possível aceder remotamente ao computador e assim trabalhar quando se está em casa. Não é necessariamente uma coisa má, mas há pessoas que (por alguma razão ou por outra) gostam de ter essa hipótese em aberto. Era necessário então arranjar uma solução realista para essa questão antes de tentar convencer as pessoas a desligar o computador delas quando não estão a trabalhar.
Foi então que me lembrei de já ter ouvido falar em WakeOnLAN, um protocolo que permite dizer a computadores específicos para se ligarem através de um pacote especial enviado na rede. Claro que é preciso activar a funcionalidade na BIOS, mas estando disponível e uma vez feito, fica a hipótese de acordar o computador a partir de outro disponível. Para ter uma solução viável, restava então arranjar forma de usar este protocolo para acordar os computadores que precisassem de acesso remoto.
Quando procurei pelo termo não encontrei imediatamente nenhum programa grande que fizesse isso. Mas encontrei dois pedaços de código em Java e C# que produziam o pacote necessário e o mandavam para a rede. A minha ideia original era criar um eSpace (uma aplicação web na terminologia da Agile Platform) e colocá-lo num dos nossos servidores internos para as pessoas terem uma interface sempre acessível e relativamente fácil de usar para acordarem o computador delas. Depois de umas conversas com alguém que gere a nossa infraestrutura e depois de alguns testes, descobrimos que os pacotes que são difundidos neste protocolo não passam pela firewall. As máquinas da infraestrutura estão numa sub-rede, as máquinas do departamento de I&D estão noutra, e o sistema de encaminhamento de pacotes não permite o encaminhamento dos pacotes de difusão entre redes. Como as pessoas que tratam da gestão da rede não estavam muito disponíveis para resolver este empecilho atempadamente, pus-me a engendrar outra solução.
Claro que o ideal era ter uma máquina na infraestrutura (preferencialmente uma máquina virtual) que por acaso estivesse sempre ligada e tivesse uma interface de rede na rede da I&D, daí a solução do eSpace num dos nossos servidores ser tão apelativa, já que não implicaria haver mais energia a ser gasta por causa desta funcionalidade. Mas isso não foi possível e então tive de me resignar a usar uma máquina de desenvolvimento que temos lá no nosso cantinho da manutenção. Essa máquina tem um CentOS e pouca RAM pelo que não é adequada para ter uma instalação da Agile Platform, o que implica que a minha solução final teve de ser de mais baixo nível.
Com o código Java que referenciei anteriormente como base criei uma classe Java com um objecto remoto (usando a tecnologia Remote Method Invocation do Java) que recebe pedidos para acordar um endereço de MAC especifico e que lança o "pacote mágico" para a rede. Como o acesso a este servidorzinho é feito através de ligações TCP/IP normais (e não através de endereços de difusão), passa bem pela firewall para dentro da rede da I&D e assim dá para alguém na VPN acordar o seu computador. Na prática tenho um Cavalo de Tróia na rede a quem qualquer um pode pedir para enviar pacotes que a firewall não deixa passar.
Armado com o conhecimento de como configurar os computadores para hibernar e com uma ferramenta capaz de acordar os computadores hibernados enviei um mail a toda a gente da engenharia da Outsystems divulgando a informação e argumentando que não faz sentido deixar os computadores ligados quando têm outras maneiras de obter o mesmo resultado. A reacção foi boa, parece-me: entre pessoas que não se tinham dado ao trabalho para ver como hibernar o computador e outros que consideraram boa ideia já há menos computadores ligados durante a noite e fim de semana na Outsystems. Com isto no mínimo consegui remover qualquer desculpa que as alguém possa ter para deixar o computador ligado.
Tanta coisa só para ter um departamento de engenharia de uma empresa pequenina a desligar mais meia dúzia de computadores quando as pessoas não estão a trabalhar. Com tantas empresas maiores a fazer coisas piores, porque é que havia de me dar a tanto trabalho para um ganho tão pequeno? É precisamente por ser algo pequeno e relativamente fácil de fazer que vale a pena fazer. Por ser pequeno, pode ser feito noutros sítios, em muitos outros sítios.
Não há muito tempo atrás ouvi falar pela primeira vez na cauda longa da distribuição de lucros da Amazon. A ideia é que na Amazon há alguns produtos (Kindle, por exemplo) que vendem muito. E depois há muitos produtos que vendem pouco. Há um pedaço bastante grande dos lucros da Amazon que vem desta quantidade enorme de produtos que vende pouco.
As contribuições para o melhor estar do ambiente seguem o mesmo raciocínio: o impacto de termos muitas pessoas a fazerem coisinhas aparentemente pequenas é certamente muito maior no panorama geral do que intuitivamente parece. Portanto quando se perguntarem se vale a pena fazer algo mesmo que o ganho energético ou ambiental seja pequeno, pensem também em divulgar o que fizeram e lembrem-se do princípio da cauda longa, porque vale a pena. Especialmente se partilharem para que outros possam fazer o mesmo.
Nós trabalhamos com uma data de ferramentas, muitas delas pesadas (o Visual Studio, por exemplo) e de manhã costumava demorar bastante tempo a ligar o computador e ligar os programas todos. Por isso até há pouco tempo atrás o que eu fazia era deixar o computador ligado quando saía para que quando voltasse já tivesse o estaminé todo montado para poder começar a trabalhar sem grande demora. Tal como eu, bastantes dos meus colegas têm o hábito de deixar o computador ligado a noite toda para que quando chegam possam começar imediatamente a trabalhar.
O problema disto é que os computadores estão ligados a semana toda (24*7 = 168 horas) em vez de estarem ligados apenas as horas de trabalho (40 + 5 (almoço) = 45). Em vez de estarem ligados ~30% do tempo (45/168 ~ 0.27), os computadores estão ligados 100% do tempo. Suspeito que isto é sintomático não só na Outsystems mas que também aconteça em muitas outras empresas que trabalhem com computadores.
Para os trabalhadores é uma decisão aparentemente fácil de tomar: deixar os computadores ligados é relativamente simples e não lhes custa nada já que é a empresa quem paga a conta de electricidade. A questão é que custa: o desperdício energético não afecta só a conta de electricidade da empresa, afecta-nos a todos porque a energia é retirada dos recursos finitos do planeta que partilhamos. Quanto menos desperdiçarmos, melhor para todos.
Mas a solução para o dilema é simples. Há muito tempo que existe a possibilidade de hibernar um computador. Se em vez de deixar os computadores ligados quando saímos do emprego os hibernássemos poderíamos ter o melhor dos dois mundos: um espaço de trabalho preparado e igual ao que tínhamos no dia anterior e poupava-se energia.
Mas para isto haviam dois impedimentos. Sinceramente eu sempre tive a ideia de hibernar o meu computador, mas a opção para o fazer não aparecia no menu de desligar o computador. Além disso algumas pessoas deixam o computador ligado para que lhe possam aceder remotamente (através da VPN), caso seja necessário por alguma razão. Nem sempre precisam de aceder remotamente aos computadores, mas não podem sempre prever quando o vão querer fazer, por isso para jogar pelo seguro vão deixando os computadores ligados.
Em conversa com uma amiga minha descobri que afinal até dá para hibernar desktops com Windows (não me aparecia a opção, portanto imaginei que o windows para desktops não viesse com isso ou qualquer coisa parva do género). Seguindo as instruções neste site (principalmente a parte de desactivar o sonho híbrido), lá consegui que a opção aparecesse, configurei o windows para hibernar quando carregasse no botão da energia e assim tenho uma maneira rápida de hibernar o computador antes de ir para casa.
Mas a minha ideia era mais do que apenas eu hibernar o meu computador. A minha ideia era convencer toda a gente lá do cantinho de I&D (Investigação e Desenvolvimento) da Outsystems a fazer o mesmo com os computadores deles. Para isso precisava de oferecer uma solução para a questão do acesso remoto. Relembro que estando o computador desligado não é possível aceder remotamente ao computador e assim trabalhar quando se está em casa. Não é necessariamente uma coisa má, mas há pessoas que (por alguma razão ou por outra) gostam de ter essa hipótese em aberto. Era necessário então arranjar uma solução realista para essa questão antes de tentar convencer as pessoas a desligar o computador delas quando não estão a trabalhar.
Foi então que me lembrei de já ter ouvido falar em WakeOnLAN, um protocolo que permite dizer a computadores específicos para se ligarem através de um pacote especial enviado na rede. Claro que é preciso activar a funcionalidade na BIOS, mas estando disponível e uma vez feito, fica a hipótese de acordar o computador a partir de outro disponível. Para ter uma solução viável, restava então arranjar forma de usar este protocolo para acordar os computadores que precisassem de acesso remoto.
Quando procurei pelo termo não encontrei imediatamente nenhum programa grande que fizesse isso. Mas encontrei dois pedaços de código em Java e C# que produziam o pacote necessário e o mandavam para a rede. A minha ideia original era criar um eSpace (uma aplicação web na terminologia da Agile Platform) e colocá-lo num dos nossos servidores internos para as pessoas terem uma interface sempre acessível e relativamente fácil de usar para acordarem o computador delas. Depois de umas conversas com alguém que gere a nossa infraestrutura e depois de alguns testes, descobrimos que os pacotes que são difundidos neste protocolo não passam pela firewall. As máquinas da infraestrutura estão numa sub-rede, as máquinas do departamento de I&D estão noutra, e o sistema de encaminhamento de pacotes não permite o encaminhamento dos pacotes de difusão entre redes. Como as pessoas que tratam da gestão da rede não estavam muito disponíveis para resolver este empecilho atempadamente, pus-me a engendrar outra solução.
Claro que o ideal era ter uma máquina na infraestrutura (preferencialmente uma máquina virtual) que por acaso estivesse sempre ligada e tivesse uma interface de rede na rede da I&D, daí a solução do eSpace num dos nossos servidores ser tão apelativa, já que não implicaria haver mais energia a ser gasta por causa desta funcionalidade. Mas isso não foi possível e então tive de me resignar a usar uma máquina de desenvolvimento que temos lá no nosso cantinho da manutenção. Essa máquina tem um CentOS e pouca RAM pelo que não é adequada para ter uma instalação da Agile Platform, o que implica que a minha solução final teve de ser de mais baixo nível.
Com o código Java que referenciei anteriormente como base criei uma classe Java com um objecto remoto (usando a tecnologia Remote Method Invocation do Java) que recebe pedidos para acordar um endereço de MAC especifico e que lança o "pacote mágico" para a rede. Como o acesso a este servidorzinho é feito através de ligações TCP/IP normais (e não através de endereços de difusão), passa bem pela firewall para dentro da rede da I&D e assim dá para alguém na VPN acordar o seu computador. Na prática tenho um Cavalo de Tróia na rede a quem qualquer um pode pedir para enviar pacotes que a firewall não deixa passar.
Armado com o conhecimento de como configurar os computadores para hibernar e com uma ferramenta capaz de acordar os computadores hibernados enviei um mail a toda a gente da engenharia da Outsystems divulgando a informação e argumentando que não faz sentido deixar os computadores ligados quando têm outras maneiras de obter o mesmo resultado. A reacção foi boa, parece-me: entre pessoas que não se tinham dado ao trabalho para ver como hibernar o computador e outros que consideraram boa ideia já há menos computadores ligados durante a noite e fim de semana na Outsystems. Com isto no mínimo consegui remover qualquer desculpa que as alguém possa ter para deixar o computador ligado.
Tanta coisa só para ter um departamento de engenharia de uma empresa pequenina a desligar mais meia dúzia de computadores quando as pessoas não estão a trabalhar. Com tantas empresas maiores a fazer coisas piores, porque é que havia de me dar a tanto trabalho para um ganho tão pequeno? É precisamente por ser algo pequeno e relativamente fácil de fazer que vale a pena fazer. Por ser pequeno, pode ser feito noutros sítios, em muitos outros sítios.
Não há muito tempo atrás ouvi falar pela primeira vez na cauda longa da distribuição de lucros da Amazon. A ideia é que na Amazon há alguns produtos (Kindle, por exemplo) que vendem muito. E depois há muitos produtos que vendem pouco. Há um pedaço bastante grande dos lucros da Amazon que vem desta quantidade enorme de produtos que vende pouco.
As contribuições para o melhor estar do ambiente seguem o mesmo raciocínio: o impacto de termos muitas pessoas a fazerem coisinhas aparentemente pequenas é certamente muito maior no panorama geral do que intuitivamente parece. Portanto quando se perguntarem se vale a pena fazer algo mesmo que o ganho energético ou ambiental seja pequeno, pensem também em divulgar o que fizeram e lembrem-se do princípio da cauda longa, porque vale a pena. Especialmente se partilharem para que outros possam fazer o mesmo.
13 de março de 2011
Uma manifestação não resolve o problema!... mas pode ser o início
Estava em conversa com uma amiga minha sobre a manifestação de ontem e as palavras que trocámos inspiraram-na a escrever o seguinte texto:
Se não queremos trabalhar em condições precárias, o que temos de fazer é não aceitar trabalhar em condições precárias. Temos de rejeitar quando nos oferecem essas condições. Se ninguém aceitar estas condições, as condições oferecidas têm de mudar para um conjunto de condições que sejam aceitáveis.
Quando estiverem à procura de emprego lembrem-se que há duas entidades em necessidade: vocês que precisam do emprego, e os empregadores que precisam do empregado. Não são só os empregadores que têm algo para vos dar, os empregados também têm algo a dar aos empregadores. E quando as pessoas se inteirarem disto, vão estar mais confortáveis em dizer "não" a condições de trabalho pouco dignas.
Ouve-se bastante o argumento "se eu não aceitar este emprego, outra pessoa aceitará". À pessoa que aceita o emprego resta consciencializar-se que ao aceitá-lo está não só a prejudicar-se a si mesma, como a prejudicar todos os que estão à procura de emprego. A verdade é que se ninguém aceitar as más condições, a mudança terá de vir do outro lado, de quem faz a proposta de emprego. E neste caso estamos a subir a qualidade de vida, em vez de a baixar.
O que esta manifestação mostra é que há pessoas suficientes que estão insatisfeitas com esta situação para fazer uma mossa. O que agora falta é essas pessoas fazerem algo que faça realmente mossa. Todos nós trabalhadores temos de lutar pelos nossos direitos, não podemos ficar de braços cruzados à espera que alguém lute por nós.
200 mil, 300 mil, não sei quantos foram, mas juntaram-se a mim na Avenida da Liberdade e no Rossio e juntos manifestámo-nos contra este futuro de precariedade que nos oferecem. “Precariedade” é um grande chavão! Não basta dizê-lo, é preciso entender o que significa e, em especial, que impacto tem no nosso futuro. No futuro desta geração que dizem ser a «mais qualificada de sempre» mas que se vê a trabalhar em call-centers , etc.Deixo aqui as palavras dela salientando o facto de que se ficarmos à espera que o governo ou as empresas tomem a iniciativa de melhorar as nossas condições de trabalho, bem podemos esperar sentados. Não é do interesse das empresas providenciar melhores condições de trabalho (porque normalmente custam mais), nem é muito do interesse do governo contradizer as empresas. Se queremos que alguém lute pelos nossos direitos não basta sairmos à rua e gritar em plenos pulmões que os temos e que queremos que sejam respeitados... temos de os fazer respeitar.
Pior do que ter empregos que não correspondem às expectativas e não fazem uso daquilo que aprendemos nas faculdades, é que, nem aí, conseguimos ter a segurança de um emprego que nos permita fazer planos para o futuro, porque não sabemos se estaremos ali daqui a uns meses. E se isto não parece muito grave quanto se tem vinte e tal anos, vai começar a ter menos graça quando tivermos trinta e tal, quarenta e tal e percebermos que a nossa vida está muito longe daquilo que idealizámos, muito longe daquilo que os nossos pais idealizaram para nós.
Sobretudo, vamos perceber que desperdiçámos décadas de luta por melhores condições laborais ao aceitar trabalhar a recibos verdes, contratos a prazo, horários de trabalho demasiado extensos, etc. Sim, porque não se iludam! A culpa desta situação não é só dos políticos, não é só das empresas, é de nós todos que nos sujeitamos a estas condições. Se não formos nós a lutar por melhores condições de trabalho, não serão as empresas a fazê-lo por nós! Os fins-de-semana não foram criados porque os patrões decidiram ser bonzinhos, foram criados pela luta dos trabalhadores e pelo seu espírito de sacrifício conjunto. E é este espírito que eu acho que se perdeu nesta sociedade individualista, e nesta época em que ser sindicalista está fora de moda e ser comunista é, muitas vezes, motivo de piadas. Esquecemo-nos do que nos ensinaram as gerações anteriores: juntos podemos dizer NÃO. Juntos temos força!
Não acredito na atitude do “se não aceitar estas condições de trabalho, fico sem emprego e alguém as aceitará em vez de mim”. Se começarmos a nossa vida profissional com este espírito, agora que nem sequer temos responsabilidades (a maior parte não tem casa para pagar nem filhos para criar) quando é que vamos começar a lutar por melhores condições? Vamos ficar à espera que esta “crise” passe e que as condições melhorem espontaneamente nessa altura? ISSO NÃO VAI ACONTECER!
Mas se todos dissermos que não, terão de criar melhores condições. Lembrem-se: somos uma geração bastante qualificada, não nos vão substituir por imigrantes brasileiros e, sobretudo, AGORA não temos nada a perder, AGORA é o momento para dizer Não! NÃO não vamos aceitar trabalhar nessas condições nem vamos andar a saltar de estágio em estágio! Somos competentes e podemos ajudar as empresas a crescer e a melhorar, não vamos aceitar que só alguns ganhem com isso! Caso contrário, aquilo que se ouviu ontem na manifestação «à rasca estamos nós, só eles é que não!» continuará a ser verdade por muitos e muitos anos.
Uma manifestação não resolve o problema, mas pode ser o início. Digamos não! Denunciemos a empresas que promovem esta precariedade! E, sobretudo, tenhamos esperança num futuro melhor e na nossa capacidade de o construir. Ontem saímos à rua aos milhares, isso quer dizer que somos muitos a pensar o mesmo, passemos à acção!
Se não queremos trabalhar em condições precárias, o que temos de fazer é não aceitar trabalhar em condições precárias. Temos de rejeitar quando nos oferecem essas condições. Se ninguém aceitar estas condições, as condições oferecidas têm de mudar para um conjunto de condições que sejam aceitáveis.
Quando estiverem à procura de emprego lembrem-se que há duas entidades em necessidade: vocês que precisam do emprego, e os empregadores que precisam do empregado. Não são só os empregadores que têm algo para vos dar, os empregados também têm algo a dar aos empregadores. E quando as pessoas se inteirarem disto, vão estar mais confortáveis em dizer "não" a condições de trabalho pouco dignas.
Ouve-se bastante o argumento "se eu não aceitar este emprego, outra pessoa aceitará". À pessoa que aceita o emprego resta consciencializar-se que ao aceitá-lo está não só a prejudicar-se a si mesma, como a prejudicar todos os que estão à procura de emprego. A verdade é que se ninguém aceitar as más condições, a mudança terá de vir do outro lado, de quem faz a proposta de emprego. E neste caso estamos a subir a qualidade de vida, em vez de a baixar.
O que esta manifestação mostra é que há pessoas suficientes que estão insatisfeitas com esta situação para fazer uma mossa. O que agora falta é essas pessoas fazerem algo que faça realmente mossa. Todos nós trabalhadores temos de lutar pelos nossos direitos, não podemos ficar de braços cruzados à espera que alguém lute por nós.
10 de março de 2011
A sério que não quero saber
Hoje queria usar uma folha de cálculo e como a licença temporária do Microsoft Office que vinha com o meu portátil deve estar quase a acabar*, decidi sacar o Libre Office, uma versão bastarda do Open Office feita por alguns tipos que não gostaram muito da passagem de mãos para a Oracle.
A página de download é engraçada. Não sei porquê alguém achou que sacar o código fonte para criar o próprio instalador é um caso de uso suficientemente importante para estar (quase) logo abaixo do download da versão que quero. Mais importante ainda do sacar o SDK para fazer as minhas alterações (já que está por cima desse). Acho que alguém tem de lhes dizer que não há aí muitas pessoas a quererem sacar o código fonte só para compilar e fazer um instalador personalizado quando, em princípio, o resultado final é igualzinho a usar o instalador dos binários. Talvez o caso de uso seja um pouco diferente do que a ligação dá a sugerir, mas prontos.
Também nessa página (e isto só reparei agora que a estou a revisitar) os temos a pedir desculpa se a "combo-box" não tiver logo o sistema operativo certo. Que idiotas... mais valia ficarem caladinhos. Imagino que aquele texto seja precisamente o contrário: o que eles estão a fazer é a gabarem-se que têm um sistema automático para detectar o sistema operativo e querem salientar essa funcionalidade. Mas como às vezes falha já se estão a desculpar. Se não quisessem ser chico-espertos não precisavam de dar a saber que a funcionalidade às vezes falhava. Se não dissessem nada, silenciosamente melhoravam a experiência do utilizador sem darem mau aspecto. Detecção do sistema operativo não é nada de tão difícil que se valha a pena gabar-se, e se não se conseguir detectar deixa-se o valor escolhido no sistema operativo mais usado que também ninguém havia de refilar se afinal falhassem.
Mas a cena mais espectacular da experiência toda ainda foi durante a instalação:
Lendo com atenção, não me estão a perguntar onde quero que o Libre Office vá parar, estão a perguntar onde quero que ponham os ficheiros temporários de instalação. Ora aí está algo que nem sequer quero saber, não percebo por que raio me estão a perguntar isto. Ponham-nos onde quiserem, num canto refundido qualquer que nunca mais vou visitar e que normalmente é apagado automaticamente, como o directório de ficheiros temporários do Windows. Se for, sem perguntar nada a ninguém, para um sítio desses como tantos outros programas fazem ao se instalarem, não me chocava nada. A única razão válida para me perguntarem uma coisa destas seria eu ter o controlo de onde os ficheiros vão parar para se tiver falta de espaço em disco saber onde estão. Há soluções melhores para este problema (que em princípio nem sequer é assim tão problemático) e nenhuma envolve perguntar-me onde quero que descompactem os ficheiros do instalador: podiam, como já disse, meter os ficheiros automaticamente numa directoria de ficheiros temporários. Podiam, se se preocupam assim tanto com o espaço que ocupam, simplesmente apagar os ficheiros como passo final do instalador.
Mas não. Escolheram perguntar-me onde quero descompactar os ficheiros do instalador. Já tinha ouvido falar no termo "smart defaults" para melhor agradar o utilizador e ele ter de mexer o menos possível nas configurações obrigatórias, mas a sugestão que eles dão como localização dos ficheiros de instalação é do melhor. Então quem é que não quereria ficheiros temporários no seu ambiente de trabalho? Isto já está tão limpinho e arrumadinho, só faltava mesmo era um directório chamado "Libre Office 3.3 (letras aleatórias) Instalation Files". Está-se mesmo a ver que é um directório que iria usar com uma frequência desgraçada depois de instalar o Libre Office.
Bem ... ao menos ficou num sítio onde é relativamente fácil seleccionar e apagar.
Na tab de "Get Involved", um dos perfis de programadores que precisam é de User Experience e Visual Designer. Têm razão. E precisam tão desesperadamente que fazem coisas completamente idióticas para chamar a atenção a esse facto.
Quando encontrar o botão de "Submit Feedback", podem crer que farei uso dele.
* Para além de ser profundamente irritante aparecer uma janela enorme para me dizer que só posso abrir o Office mais uma dúzia de vezes e a perguntar se não quero dar um balúrdio do dinheiro pelo privilégio de o poder abrir as vezes que quiser.
A página de download é engraçada. Não sei porquê alguém achou que sacar o código fonte para criar o próprio instalador é um caso de uso suficientemente importante para estar (quase) logo abaixo do download da versão que quero. Mais importante ainda do sacar o SDK para fazer as minhas alterações (já que está por cima desse). Acho que alguém tem de lhes dizer que não há aí muitas pessoas a quererem sacar o código fonte só para compilar e fazer um instalador personalizado quando, em princípio, o resultado final é igualzinho a usar o instalador dos binários. Talvez o caso de uso seja um pouco diferente do que a ligação dá a sugerir, mas prontos.
Também nessa página (e isto só reparei agora que a estou a revisitar) os temos a pedir desculpa se a "combo-box" não tiver logo o sistema operativo certo. Que idiotas... mais valia ficarem caladinhos. Imagino que aquele texto seja precisamente o contrário: o que eles estão a fazer é a gabarem-se que têm um sistema automático para detectar o sistema operativo e querem salientar essa funcionalidade. Mas como às vezes falha já se estão a desculpar. Se não quisessem ser chico-espertos não precisavam de dar a saber que a funcionalidade às vezes falhava. Se não dissessem nada, silenciosamente melhoravam a experiência do utilizador sem darem mau aspecto. Detecção do sistema operativo não é nada de tão difícil que se valha a pena gabar-se, e se não se conseguir detectar deixa-se o valor escolhido no sistema operativo mais usado que também ninguém havia de refilar se afinal falhassem.
Mas a cena mais espectacular da experiência toda ainda foi durante a instalação:
Lendo com atenção, não me estão a perguntar onde quero que o Libre Office vá parar, estão a perguntar onde quero que ponham os ficheiros temporários de instalação. Ora aí está algo que nem sequer quero saber, não percebo por que raio me estão a perguntar isto. Ponham-nos onde quiserem, num canto refundido qualquer que nunca mais vou visitar e que normalmente é apagado automaticamente, como o directório de ficheiros temporários do Windows. Se for, sem perguntar nada a ninguém, para um sítio desses como tantos outros programas fazem ao se instalarem, não me chocava nada. A única razão válida para me perguntarem uma coisa destas seria eu ter o controlo de onde os ficheiros vão parar para se tiver falta de espaço em disco saber onde estão. Há soluções melhores para este problema (que em princípio nem sequer é assim tão problemático) e nenhuma envolve perguntar-me onde quero que descompactem os ficheiros do instalador: podiam, como já disse, meter os ficheiros automaticamente numa directoria de ficheiros temporários. Podiam, se se preocupam assim tanto com o espaço que ocupam, simplesmente apagar os ficheiros como passo final do instalador.
Mas não. Escolheram perguntar-me onde quero descompactar os ficheiros do instalador. Já tinha ouvido falar no termo "smart defaults" para melhor agradar o utilizador e ele ter de mexer o menos possível nas configurações obrigatórias, mas a sugestão que eles dão como localização dos ficheiros de instalação é do melhor. Então quem é que não quereria ficheiros temporários no seu ambiente de trabalho? Isto já está tão limpinho e arrumadinho, só faltava mesmo era um directório chamado "Libre Office 3.3 (letras aleatórias) Instalation Files". Está-se mesmo a ver que é um directório que iria usar com uma frequência desgraçada depois de instalar o Libre Office.
Bem ... ao menos ficou num sítio onde é relativamente fácil seleccionar e apagar.
Na tab de "Get Involved", um dos perfis de programadores que precisam é de User Experience e Visual Designer. Têm razão. E precisam tão desesperadamente que fazem coisas completamente idióticas para chamar a atenção a esse facto.
Quando encontrar o botão de "Submit Feedback", podem crer que farei uso dele.
* Para além de ser profundamente irritante aparecer uma janela enorme para me dizer que só posso abrir o Office mais uma dúzia de vezes e a perguntar se não quero dar um balúrdio do dinheiro pelo privilégio de o poder abrir as vezes que quiser.
2 de março de 2011
O que distingue um bom programador?
Esta semana estou a fazer o Developer Boot Camp da OutSystems. A ideia é aprofundar os meus conhecimentos na óptica de Developer para a Agile Platform para que possa estar mais à vontade a desenvolver as ferramentas que se usam internamente na OutSystems (a grande maioria é desenvolvida com a própria plataforma da OutSystems), mas também para saber o que é que se anda a ensinar a quem usa a plataforma de forma a melhor compreender os erros que nos aparecem na Manutenção.
Uma das vantagens destes boot camps é conhecer outros profissionais da área de informática, particularmente com outra história e sensibilidades. Ontem gerou-se uma discussão que eu achei bastante interessante. Estava o formador a explicar as "Simple Queries" e como funcionavam e não é que aparece nos slides um "SELECT * FROM tabela ...". Visto isto há um dos colegas que pergunta se é possível seleccionar especificamente os campos em vez de se usar *. Ele claramente preocupado com aderir às boas práticas de SQL de seleccionar apenas os campos que interessam e obtê-los numa ordem previsível. "Não é preciso, a plataforma faz isso por si. Não só o '*' conceptual é expandido nos campos concretos da tabela, como os campos que não são usados também não são obtidos." é a resposta à preocupação dele. Devia chegar, mas não chegou.
É então que surge outra preocupação pelo mesmo colega: "Ora. Se a plataforma faz isso, como é que distingo quem sabe o que está a fazer de quem não sabe o que está a fazer quando faz perguntas à base de dados?". Aqui o argumento é bastante diferente: ao estar a tirar um fardo do programador, a plataforma está a retirar uma das características que o senhor usava para avaliar a competência dos seus programadores.
A minha opinião sobre o assunto é que se o que distingue um bom programador de um mau programador é algo que pode ser automatizado, então eu proponho que não é uma boa medida para avaliar o trabalho de um ser humano. Automatize-se o que se puder ao máximo e avaliem-se as capacidades cognitivas do programador, não as suas capacidades mecânicas.
Esta boa prática em particular tem como principal objectivo que as perguntas à base de dados sejam mais eficientes e menos propensas a erros. Com o "*", conceptualmente, os campos podem vir numa qualquer ordem, e poder-se-ia estar a introduzir um erro difícil de detectar se os campos viessem numa ordem diferente da esperada, ou pior ainda, se por alguma razão deixarem de vir pela ordem que vinham quando se definiu a pergunta. Por isso é boa prática enumerar os campos em vez de usar '*'. Por outro lado, se só precisarmos de dois ou três dos campos das tabelas usadas para realizar a pergunta, também é boa prática listar apenas os campos que vamos usar na selecção. Isto vai fazer com que hajam menos dados a passar na ligação (usualmente remota) à base de dados, melhorando o desempenho da aplicação.
Estas boas práticas são particularmente chatinhas de manter: se de repente deixo de precisar ou passo a precisar de um certo campo, posso ter de ir à definição da variável que guarda os valores adicionar/remover o campo, ter a certeza que na pergunta está lá ou deixa de estar. Enfim, pode ser preciso estar a alterar várias partes do código para fazer alterações rotineiras, das quais é fácil esquecer uma ou outra. Alterações do modelo de dados que se queiram utilizar podem também necessitar ir a uma série de perguntas alterar a lista de atributos obtidos, noutra operação rotineira e propensa a erros.
Como todas as operações rotineiras e monótonas, quanto mais automático isto for melhor. Na Agile Platform da OutSystems é exactamente isso que acontece. Os programadores que usem "Simple Queries" (servem perfeitamente para a vasta maioria das perguntas) beneficiam de borla destas boas práticas sem terem de se preocupar com isso. É maravilhoso poder fazer perguntas optimizadas a um nível de abstracção tão alto como o possível na Agile Platform.
Revisitando a preocupação do meu colega de formação: quando a plataforma faz tanto por nós pode parecer mais difícil distinguir um bom programador de um mau programador. Não me parece que seja um problema, principalmente porque o que interessa é ter bom código. Se ele foi feito por um bom programador, um mau programador ou por um gerador de código, não é tão relevante quanto isso. E nem sequer é um problema novo.
Quando surgiram compiladores de linguagem máquina para linguagens sequenciais simples, os programadores deixaram de se preocupar com (por exemplo) meter variáveis a 0 usando xor com ela própria (poupa algumas instruções) para se passarem a preocupar com problemas de mais alto nível. O mesmo se observou quando surgiram linguagens "managed" que (entre outras coisas) gerem grande parte da alocação da memória pelo programador. Em ambas estas instâncias o que distingue um bom programador da linguagem "antes" e o que distingue um bom programador na linguagem "depois" são quase sempre pormenores diferentes. Claro que também há características distintivas de bons programadores em geral que não estão ligadas a tecnologias especificas.
Mas esta subida da parada é algo positivo. Mesmo que os novos programadores Java (ou C#) não saibam nada de alocação de memória, e não se fossem lembrar de fazer os free's para todos os malloc's, eles agora vão ser avaliados pelo quão bem conhecem e usam as bibliotecas da linguagem, por exemplo. E é bom que não se tenham de preocupar com as coisinhas de baixo nível para virarem a sua atenção para a organização do programa e em ter mais e melhores funcionalidades no produto final.
Quando "programamos em OutSystems" a linguagem que usamos é gráfica: arrastamos bolinhas e outros bonequinhos para fluxos, editamos (visualmente) como a informação é apresentada, e definimos o modelo de dados das nossas aplicações usando o modelo Entidade-Relação. Por trás a plataforma vai gerar o SQL, o código aspx (ou jsp), e o código C# ou Java que implementa a nossa aplicação. Não temos de nos preocupar em fazer x = 0 com XOR em vez de usando uma constante (é o compilador de baixo nível que faz isso), nem com fazer um free por cada malloc (a linguagem "managed" é quem tem essa preocupação), e agora nem temos de nos preocupar com o código aspx/html ou sequer com as perguntas SQL (é a Agile Platform quem faz isso). Isto é mais do que bom, é óptimo.
Não termos de nos preocupar com estes pormenores (e eles serem feitas pelas camadas mais abaixo) quer dizer que as nossas preocupações vão para outros pormenores. Já não conseguir distinguir o "bom" programador que sabe o básico de optimizar perguntas SQL é uma vantagem já que mesmo o tipo que não sabe optimizar perguntas SQL vai gerar perguntas SQL optimizadas. Tal como o tipo que não sabe onde deve fazer free, vai ter os free's no sítio certo. O código por baixo é portanto de melhor qualidade. Remover estas preocupações propencia a uma melhor qualidade geral do programa, e é isso que todos queremos fazer: programas de qualidade.
Com a Agile Platform, o nível onde estão as distinções entre programadores fica cada vez mais próximo do nível que quem utiliza a aplicação vai ver. A não ser quando o programa estoura por falta de memória, quem usa um programa não quer saber se os free's estão todos feitos. A não ser que o programa demore um tempo alarvo a ir buscar dados à base de dados, o utilizador quer lá saber se o SELECT tem * ou não. O foco da qualidade da aplicação passa para cada vez mais perto de onde interessa, para quem o utiliza. E esta aproximação do utilizador final só pode ser positiva. Temos de nos lembrar que não fazemos aplicações por fazer aplicações (por mais tecnicamente bem feitas que estejam), mas sim que fazemos aplicações para serem usadas por alguém.
Um bom programador OutSystems vai ser aquele que melhor constrói o modelo de dados adequado ao problema em mãos. É também aquele que melhor desenha a funcionalidade desejada sobre esses dados, com cada vez mais atenção que o cliente quer (quer ele o expresse ou não). Um bom programador OutSystems vai fazer aplicações fantásticas para quem as utiliza.
Uma das vantagens destes boot camps é conhecer outros profissionais da área de informática, particularmente com outra história e sensibilidades. Ontem gerou-se uma discussão que eu achei bastante interessante. Estava o formador a explicar as "Simple Queries" e como funcionavam e não é que aparece nos slides um "SELECT * FROM tabela ...". Visto isto há um dos colegas que pergunta se é possível seleccionar especificamente os campos em vez de se usar *. Ele claramente preocupado com aderir às boas práticas de SQL de seleccionar apenas os campos que interessam e obtê-los numa ordem previsível. "Não é preciso, a plataforma faz isso por si. Não só o '*' conceptual é expandido nos campos concretos da tabela, como os campos que não são usados também não são obtidos." é a resposta à preocupação dele. Devia chegar, mas não chegou.
É então que surge outra preocupação pelo mesmo colega: "Ora. Se a plataforma faz isso, como é que distingo quem sabe o que está a fazer de quem não sabe o que está a fazer quando faz perguntas à base de dados?". Aqui o argumento é bastante diferente: ao estar a tirar um fardo do programador, a plataforma está a retirar uma das características que o senhor usava para avaliar a competência dos seus programadores.
A minha opinião sobre o assunto é que se o que distingue um bom programador de um mau programador é algo que pode ser automatizado, então eu proponho que não é uma boa medida para avaliar o trabalho de um ser humano. Automatize-se o que se puder ao máximo e avaliem-se as capacidades cognitivas do programador, não as suas capacidades mecânicas.
Esta boa prática em particular tem como principal objectivo que as perguntas à base de dados sejam mais eficientes e menos propensas a erros. Com o "*", conceptualmente, os campos podem vir numa qualquer ordem, e poder-se-ia estar a introduzir um erro difícil de detectar se os campos viessem numa ordem diferente da esperada, ou pior ainda, se por alguma razão deixarem de vir pela ordem que vinham quando se definiu a pergunta. Por isso é boa prática enumerar os campos em vez de usar '*'. Por outro lado, se só precisarmos de dois ou três dos campos das tabelas usadas para realizar a pergunta, também é boa prática listar apenas os campos que vamos usar na selecção. Isto vai fazer com que hajam menos dados a passar na ligação (usualmente remota) à base de dados, melhorando o desempenho da aplicação.
Estas boas práticas são particularmente chatinhas de manter: se de repente deixo de precisar ou passo a precisar de um certo campo, posso ter de ir à definição da variável que guarda os valores adicionar/remover o campo, ter a certeza que na pergunta está lá ou deixa de estar. Enfim, pode ser preciso estar a alterar várias partes do código para fazer alterações rotineiras, das quais é fácil esquecer uma ou outra. Alterações do modelo de dados que se queiram utilizar podem também necessitar ir a uma série de perguntas alterar a lista de atributos obtidos, noutra operação rotineira e propensa a erros.
Como todas as operações rotineiras e monótonas, quanto mais automático isto for melhor. Na Agile Platform da OutSystems é exactamente isso que acontece. Os programadores que usem "Simple Queries" (servem perfeitamente para a vasta maioria das perguntas) beneficiam de borla destas boas práticas sem terem de se preocupar com isso. É maravilhoso poder fazer perguntas optimizadas a um nível de abstracção tão alto como o possível na Agile Platform.
Revisitando a preocupação do meu colega de formação: quando a plataforma faz tanto por nós pode parecer mais difícil distinguir um bom programador de um mau programador. Não me parece que seja um problema, principalmente porque o que interessa é ter bom código. Se ele foi feito por um bom programador, um mau programador ou por um gerador de código, não é tão relevante quanto isso. E nem sequer é um problema novo.
Quando surgiram compiladores de linguagem máquina para linguagens sequenciais simples, os programadores deixaram de se preocupar com (por exemplo) meter variáveis a 0 usando xor com ela própria (poupa algumas instruções) para se passarem a preocupar com problemas de mais alto nível. O mesmo se observou quando surgiram linguagens "managed" que (entre outras coisas) gerem grande parte da alocação da memória pelo programador. Em ambas estas instâncias o que distingue um bom programador da linguagem "antes" e o que distingue um bom programador na linguagem "depois" são quase sempre pormenores diferentes. Claro que também há características distintivas de bons programadores em geral que não estão ligadas a tecnologias especificas.
Mas esta subida da parada é algo positivo. Mesmo que os novos programadores Java (ou C#) não saibam nada de alocação de memória, e não se fossem lembrar de fazer os free's para todos os malloc's, eles agora vão ser avaliados pelo quão bem conhecem e usam as bibliotecas da linguagem, por exemplo. E é bom que não se tenham de preocupar com as coisinhas de baixo nível para virarem a sua atenção para a organização do programa e em ter mais e melhores funcionalidades no produto final.
Quando "programamos em OutSystems" a linguagem que usamos é gráfica: arrastamos bolinhas e outros bonequinhos para fluxos, editamos (visualmente) como a informação é apresentada, e definimos o modelo de dados das nossas aplicações usando o modelo Entidade-Relação. Por trás a plataforma vai gerar o SQL, o código aspx (ou jsp), e o código C# ou Java que implementa a nossa aplicação. Não temos de nos preocupar em fazer x = 0 com XOR em vez de usando uma constante (é o compilador de baixo nível que faz isso), nem com fazer um free por cada malloc (a linguagem "managed" é quem tem essa preocupação), e agora nem temos de nos preocupar com o código aspx/html ou sequer com as perguntas SQL (é a Agile Platform quem faz isso). Isto é mais do que bom, é óptimo.
Não termos de nos preocupar com estes pormenores (e eles serem feitas pelas camadas mais abaixo) quer dizer que as nossas preocupações vão para outros pormenores. Já não conseguir distinguir o "bom" programador que sabe o básico de optimizar perguntas SQL é uma vantagem já que mesmo o tipo que não sabe optimizar perguntas SQL vai gerar perguntas SQL optimizadas. Tal como o tipo que não sabe onde deve fazer free, vai ter os free's no sítio certo. O código por baixo é portanto de melhor qualidade. Remover estas preocupações propencia a uma melhor qualidade geral do programa, e é isso que todos queremos fazer: programas de qualidade.
Com a Agile Platform, o nível onde estão as distinções entre programadores fica cada vez mais próximo do nível que quem utiliza a aplicação vai ver. A não ser quando o programa estoura por falta de memória, quem usa um programa não quer saber se os free's estão todos feitos. A não ser que o programa demore um tempo alarvo a ir buscar dados à base de dados, o utilizador quer lá saber se o SELECT tem * ou não. O foco da qualidade da aplicação passa para cada vez mais perto de onde interessa, para quem o utiliza. E esta aproximação do utilizador final só pode ser positiva. Temos de nos lembrar que não fazemos aplicações por fazer aplicações (por mais tecnicamente bem feitas que estejam), mas sim que fazemos aplicações para serem usadas por alguém.
Um bom programador OutSystems vai ser aquele que melhor constrói o modelo de dados adequado ao problema em mãos. É também aquele que melhor desenha a funcionalidade desejada sobre esses dados, com cada vez mais atenção que o cliente quer (quer ele o expresse ou não). Um bom programador OutSystems vai fazer aplicações fantásticas para quem as utiliza.
30 de janeiro de 2011
Atlas Shrugged - Objectivismo
Antes de virar filósofa a tempo inteiro, Ayn Rand escreveu um ensaio sobre a sua filosofia. Este ensaio foi entregue na forma de um romance de 1300 páginas de nome Atlas Shrugged.
A primeira vez que ouvi falar no Atlas Shrugged foi neste post do Gevlon (o blog está em inglês), em que ele menciona o tema central do romance, a Greve dos "Men of the Mind". A ideia intrigou-me e encomendei o livro para o ler. Desde que o recebi que o tenho estado a ler, tendo apenas feito uma pausazinha para experimentar o Kindle.
Ainda não acabei o livro*, mas aponto aqui os pontos da história que até agora me marcaram mais:
A primeira vez que ouvi falar no Atlas Shrugged foi neste post do Gevlon (o blog está em inglês), em que ele menciona o tema central do romance, a Greve dos "Men of the Mind". A ideia intrigou-me e encomendei o livro para o ler. Desde que o recebi que o tenho estado a ler, tendo apenas feito uma pausazinha para experimentar o Kindle.
Ainda não acabei o livro*, mas aponto aqui os pontos da história que até agora me marcaram mais:
- A luta frustrante (da protagonista da história) contra a incompetência generalizada da sociedade
- A queda da 20th Century Motor Company -- From each according to their ability, to each according to their need (de cada um conforme as suas capacidades, para cada um conforme as suas necessidades)
- A greve da mente
- Filosofia de troca entre iguais
- Dicotomia "produtores/sanguessugas"
Espero em breve conseguir articular um post sobre cada um destes pontos descrevendo-os em detalhe e como afectaram o meu pensamento.
Apenas para tentar expor o que até agora percebi da filosofia da Ayn Rand que foi obtido quase exclusivamente a partir da leitura deste livro e de uns poucos vídeos de entrevistas no youtube, o ponto fulcral da filosofia prende-se na satisfação dos desejos próprios. O que a Rand defende é que cada pessoa deve perseguir os seus objectivos, deve tentar ser feliz. E que o deve fazer sem exigir que outras pessoas abdiquem da sua própria felicidade para o seu bem. As palavras usadas em Atlas Shrugged para incorporar esta filosofia são: "I swear - by my life and my love of it - that I will never live for the sake of another man, nor ask another to live for mine".
O Objectivismo é especialmente interessante porque se apresenta como o que os Criacionistas como o Perspectiva (comentador frequente do blog do Ludwig Krippahl) dizem ser impossível num mundo sem Deus: um código moral baseado na razão. Embora eu ainda esteja bastante longe de subscrever totalmente o Objectivismo, este mostra-nos que pelo menos é concebível um código moral sem que as regras sejam baseadas em algo que foi escrito em pedra por um ser misterioso.
Devo dizer que seria capaz de subscrever à premissa base: Poderia jurar não viver para o bem dos outros, nem exigir que outros vivam para o meu bem.
* Por acaso entre o primeiro rascunho deste texto e a sua publicação até já acabei de ler o livro.
* Por acaso entre o primeiro rascunho deste texto e a sua publicação até já acabei de ler o livro.
6 de janeiro de 2011
Kindle - Primeira Impressão
Numa palavra: espectacular.
Elaborando: Há uns tempos decidi-me a oferecer-me a mim mesmo um Kindle e assim o fiz. Para poupar o tempo de espera absurdo para encomendas internacionais (cerca de 7 semanas) fiz um pouco de marosca e comprei na Amazon do Reino Unido para um endereço fictício no Reino Unido (através do Borderlinx). Assim pedi o equipamento no dia 14 de Dezembro e no dia 28 de Dezembro (2 em vez de 7 semanas) estava entregue. Saiu mais caro, mas ao menos não tenho de esperar mais um mês.
O Kindle é um exemplo excelente de um aparelho bem feito: faz o que é suposto fazer, e fá-lo muito bem. E não se nota que estou a lidar com tecnologia avançada. A experiência é praticamente a mesma do que lendo um livro. Há a operação de abrir o livro, e posso começar a ler e folhear. Para folhear usam-se uns botões que há do lado do Kindle, com umas cópias simétricas no outro lado para funcionar bem agarre nele com uma mão ou a outra.
Quando estou a ler, é isto que se vê, o texto e um pequeno indicador do progresso actual do livro. Mais nada, o que é óptimo.
O progresso é medido em "Locations" que ainda não percebi muito bem ao que corresponde. Pelo que tenho lido corresponde a pontos fixos e periódicos no texto, qualquer coisa como 100 em 100 caracteres ou assim. É uma medida estranha e serve de pouco mais do que para ter uma barrinha de progresso.
Com o ecrã em e-ink, a experiência de leitura é tal e qual ler de um livro em papel, só que geralmente mais leve. Se o Kindle só fizesse isto, já me bastava.
Mas como se trata de um equipamento electrónico é possível adicionar uma série de pequenas features que tornam a experiência ainda mais agradável. A primeira das quais é customização. Há imensos tamanhos de letra desde o muito pequeno ao absolutamente enorme, tem três tipos de letra, dá para configurar o espaçamento entre linhas e também o tamanho das margens, isto tudo para satisfazer as diferentes preferências e limitações dos leitores.
Outro pequena adição possibilitada pela natureza electrónica do Kindle é o dicionário incorporado. Se não souber o significado de uma dada palavra, posso mover o cursor (apenas visível depois de começar e mexer com ele) para a frente dessa palavra e se ela estiver no dicionário, tenho uma breve definição da palavra mostrada de um modo não muito intrusivo na leitura:
Para evitar interferir com a leitura quando a palavra está na primeira metade do ecrã a definição aparece em baixo, e quando está na segunda metade aparece em cima. E se a pequena sinopse da definição não for suficiente, pode-se sempre carregar no "Enter" para ver a definição completa, muitas vezes com definições alternativas e exemplos de uso da palavra:
A mostra do texto e a sua justificação às margens é bastante bom, ajustando o espaçamento entre as palavras tentando que o texto de cada linha comece e acabe na margem, o que torna a leitura bastante agradável. Ao contrário da bela porcaria de algoritmo que o MS Word usa para o mesmo efeito, o algoritmo do Kindle prefere deixar algum espaço na margem direita quando a última palavra é bastante grande e sobra muito espaço em branco para distribuir. No entanto, de vez em quando, há umas palavras bastante grandes (ou junções de palavras com travessões ou outros elementos de pontuação) que dão um ar pouco natural à quebra de linha. Isto era facilmente resolvível com hifenização das palavras, como o LaTeX faz. Sinceramente não percebo porque é que o Kindle não hifeniza as palavras que considera deixarem demasiado espaço. Isso tornaria a leitura ainda mais agradável, na minha opinião.
Outro pequeno "defeito" do Kindle é a sua forma. Quando não estou a ler mas tenho de o levar comigo, como não tenho bolso nenhum onde o Kindle caiba, tenho de o segurar por baixo de forma a não encher o ecrã de dedadas (embora pareça uma folha de papel, ainda é um ecrã... e não é um touchscreen, como a maioria das pessoas que pega nele pensa), o que o deixa numa posição um bocado desajeitada. Se calhar é um defeito por desenho, para as pessoas se sentirem "forçadas" a comprar uma capa.
Qualquer das maneiras, a minha opinião inicial do Kindle é muito favorável e recomendo a toda a gente que goste de ler. É muito melhor do que andar com um calhamaço de 1200 páginas atrás.
Elaborando: Há uns tempos decidi-me a oferecer-me a mim mesmo um Kindle e assim o fiz. Para poupar o tempo de espera absurdo para encomendas internacionais (cerca de 7 semanas) fiz um pouco de marosca e comprei na Amazon do Reino Unido para um endereço fictício no Reino Unido (através do Borderlinx). Assim pedi o equipamento no dia 14 de Dezembro e no dia 28 de Dezembro (2 em vez de 7 semanas) estava entregue. Saiu mais caro, mas ao menos não tenho de esperar mais um mês.
O Kindle é um exemplo excelente de um aparelho bem feito: faz o que é suposto fazer, e fá-lo muito bem. E não se nota que estou a lidar com tecnologia avançada. A experiência é praticamente a mesma do que lendo um livro. Há a operação de abrir o livro, e posso começar a ler e folhear. Para folhear usam-se uns botões que há do lado do Kindle, com umas cópias simétricas no outro lado para funcionar bem agarre nele com uma mão ou a outra.
Quando estou a ler, é isto que se vê, o texto e um pequeno indicador do progresso actual do livro. Mais nada, o que é óptimo.
![]() |
| Interface de Leitura do Kindle |
O progresso é medido em "Locations" que ainda não percebi muito bem ao que corresponde. Pelo que tenho lido corresponde a pontos fixos e periódicos no texto, qualquer coisa como 100 em 100 caracteres ou assim. É uma medida estranha e serve de pouco mais do que para ter uma barrinha de progresso.
Com o ecrã em e-ink, a experiência de leitura é tal e qual ler de um livro em papel, só que geralmente mais leve. Se o Kindle só fizesse isto, já me bastava.
Mas como se trata de um equipamento electrónico é possível adicionar uma série de pequenas features que tornam a experiência ainda mais agradável. A primeira das quais é customização. Há imensos tamanhos de letra desde o muito pequeno ao absolutamente enorme, tem três tipos de letra, dá para configurar o espaçamento entre linhas e também o tamanho das margens, isto tudo para satisfazer as diferentes preferências e limitações dos leitores.
Outro pequena adição possibilitada pela natureza electrónica do Kindle é o dicionário incorporado. Se não souber o significado de uma dada palavra, posso mover o cursor (apenas visível depois de começar e mexer com ele) para a frente dessa palavra e se ela estiver no dicionário, tenho uma breve definição da palavra mostrada de um modo não muito intrusivo na leitura:
![]() |
| Kindle com a definição de uma palavra |
![]() |
| Detalhe da definição de uma palavra |
A mostra do texto e a sua justificação às margens é bastante bom, ajustando o espaçamento entre as palavras tentando que o texto de cada linha comece e acabe na margem, o que torna a leitura bastante agradável. Ao contrário da bela porcaria de algoritmo que o MS Word usa para o mesmo efeito, o algoritmo do Kindle prefere deixar algum espaço na margem direita quando a última palavra é bastante grande e sobra muito espaço em branco para distribuir. No entanto, de vez em quando, há umas palavras bastante grandes (ou junções de palavras com travessões ou outros elementos de pontuação) que dão um ar pouco natural à quebra de linha. Isto era facilmente resolvível com hifenização das palavras, como o LaTeX faz. Sinceramente não percebo porque é que o Kindle não hifeniza as palavras que considera deixarem demasiado espaço. Isso tornaria a leitura ainda mais agradável, na minha opinião.
Outro pequeno "defeito" do Kindle é a sua forma. Quando não estou a ler mas tenho de o levar comigo, como não tenho bolso nenhum onde o Kindle caiba, tenho de o segurar por baixo de forma a não encher o ecrã de dedadas (embora pareça uma folha de papel, ainda é um ecrã... e não é um touchscreen, como a maioria das pessoas que pega nele pensa), o que o deixa numa posição um bocado desajeitada. Se calhar é um defeito por desenho, para as pessoas se sentirem "forçadas" a comprar uma capa.
Qualquer das maneiras, a minha opinião inicial do Kindle é muito favorável e recomendo a toda a gente que goste de ler. É muito melhor do que andar com um calhamaço de 1200 páginas atrás.
Subscrever:
Mensagens (Atom)



