Antes de mais nada, um pedido de desculpas às 10 pessoas que visitaram o mjamado.com com o Internet Explorer 8 até sexta-feira: como estou a usar as novas tags semânticas do HTML5, devem ter ficado a olhar para um grande espaço de... nada. Acontece que os IE abaixo do 9 não reconhecem as novas tags e, pior do que isso, não lhe dão sequer um estilo básico (podiam definir todas as tags desconhecidas como block, por exemplo); para adicionar insulto à injúria, definir um estilo na CSS também não chega, porque as tags nem são inseridas na DOM.

Quando publiquei esqueci-me desse problema, mas já está controlado, através do HTML5 Shiv (um excelente pedaço de história sobre a evolução desta solução pode ser encontrada aqui).

Com isso fora do caminho, existiam dois grandes problemas, que eu tinha debaixo de olho desde o início.

O primeiro era relacionado com as CSS Transitions, das quais já falei aqui. Desde o início do projecto que assumi a opção da degradação graciosa, que o transforma num não-problema. Quem usa o IE não vê a transição entre os dois estados, mas não perde nenhuma de experiência intrínseca, tendo acesso a ambos; só que a transição é abrupta. Como já disse nesse post, é relativamente fácil forçar o comportamente consistente com meia dúzia de linhas JS, mas não compensa o esforço; sobretudo, à luz do lançamento próximo do IE10.

O outro era muito mais bicudo e está relacionado com a conjugação de gradientes CSS e cantos redondos. Aliás, nem sequer é a primeira vez que os cantos redondos me vêm morder no rabo. Desde essa altura, o IE9 passou a suportar cantos redondos e até o Chrome, culpado por esse post, melhorou bastante o cálculo do corte do background.

Apesar de não suportar gradientes CSS, o IE (para aí desde o 6) suporta gradientes lineares definidos através de filtros DirectX. É uma questão de incluir esses filtros, e o IE, não reconhecendo a sintaxe CSS3 dos gradientes, irá usá-los. Porreiro, certo? O problema é quando se atiram os cantos redondos para cima.

Continuando com coisas-que-ainda-não-tinha-experimentado-a-sério, usei no mjamado.com duas web fonts do directório da Google (Cantata One para os títulos e Imprima para corpo). Já tinha usado uma ou outra nalguns projectos comerciais (e por "usado" entenda-se que a empresa tinha usado – o design não é exactamente a minha praia), mas queria ver "ao perto" o que se podia fazer com isto.

O processo é trivial e croquetes, mais ainda se aceitarmos os métodos mais simples que a própria Google recomenda. Só embati numa pequena irritação, que ainda por cima não tem solução – ironicamente, afecta outro produto da Google, o Chrome, mas apenas em Windows.

O problema é este:

Ao construir o mjamado.com, evitei ao máximo usar animações por Javascript, preferindo usar CSS Transitions. O motivo óbvio é o desempenho: uma animação ser controlada pelo renderer interno dos browsers será sempre mais rápida e leve do que pelo motor de JS.

Um motivo menos claro é a separação de responsabilidades: cabe ao HTML mostrar os dados, ao JS controlar as acções sobre esses dados (acções apresentacionais - qualquer acção que altere os dados deve ser server side) e às CSS controlar como são apresentados os dados. Uma transição entre visualizações de dados é, claramente, uma responsabilidade apresentacional – logo, uma responsabilidade de CSS.

As CSS Transitions são novinhas em folha; pertencem à especificação CSS3, ainda estão em estado de working draft na W3C, mas o suporte já é sólido: segundo o caniuse.com, e corroborado pelos meus testes, apenas o Opera Mini, usado nalguns telemóveis menos potentes, e o (sem surpresa) Internet Explorer (até à versão actual, a 9) não as suportam. Todos os outros browsers tem suporte, pelo menos, há 5 gerações.

As transições funcionam de um estilo para outro, seja como for que esse estilo varie (por estados, mudança de classe ou id, directo ou indirecto), e podem animar qualquer valor passível de ser interpretado como numérico – cores, por exemplo, podem ser declaradas como nomes, mas têm um valor intrínseco numérico. São parametrizadas por quatro valores: a propriedade a animar, a duração, o nome de uma função de animação e o tempo de atraso de início de animação.

Tal como tinha dito aqui, está na altura do mjamado.com passar à iteracção seguinte. Já passou tempo que chegue, espero que todos os parceiros de negócios do Sr. Messias tenham actualizado os seus contactos e até o site das Páginas Amarelas já retirou o link.

Nesta iteracção, contém um misto de currículo e portfólio e, provavelmente, manter-se-á neste formato a médio prazo.

Aproveitei que era um projecto relativamente simples (meia dúzia de canais, autenticação de utilizadores de back-office básica) para usar um conjunto de tecnologias com que tenho andado a brincar (Yii, SASS e Compass), assim como várias técnicas que ainda não tinha usado em projectos ao vivo (media queries, CSS transitions).

Nos próximos dias farei mais alguns posts sobre algumas das técnicas que usei e os percalços que encontrei.

Comentários Nenhum comentário Continuar a ler Continuar a ler »

R2D2O Montepio tem uma nova campanha publicitária baseada no universo Star Wars. Porreiro. Um dos spots de rádio conta com a "participação" do astro-dróide R2D2. Ora oiçam:

Uma conversa muito agradável, a senhora até consegue algo só ao alcance do C3PO e de alguns Jedi, que é entender os trinados do R2D2. Ou então tem um monitor de tradução como os que equipam os T-65 X-Wing Starfighter ou os Eta-2 Actis-class Interceptor.

Mas a parte que realmente me interessa é esta:

- Não, senhor R2D2, não são 4 anos-luz; são 4 anos terrestres.

Ora, ou o R2D2, à força de andar sempre metido em sarilhos, perdeu de vez o juízo, ou a senhora, realmente, não percebe patavina dos trinados, e, na volta, este desgraçado astro dróide só queria mesmo alguém que lhe trocasse o óleo, e está a ser impingido com um depósito a prazo.

É que a unidade anos-luz é uma medida de distância e não de tempo, como anos terrestres. Um ano-luz é a distância percorrida pela luz num ano. Como a velocidade da luz no vácuo é uma constante (um cheirinho menos que 300.000 quilómetros por segundo), um ano-luz é qualquer coisa como 9,46 x 1015 metros, ou quase 9,5 biliões de quilómetros (biliões dos nossos, não dos americanos).

Criativos de todo o mundo, se vão fazer referências científicas nos vossos anúncios, façam um favor à humanidade: arranjem um assessor científico. Da maneira que andam as coisas, estão baratos e impedem que pareçam uns perfeitos anormais.

Comentários Nenhum comentário Continuar a ler Continuar a ler »
The 500 Blog - Homepage
Em Novembro surgiu um desafio no P@P para criar um blog em 500 linhas. O objectivo não era fácil (tanto eu como o outro participante falhámos, de largo), mas, pelo menos, ficou montado um motor próprio para aprendizagem, com muitos exemplos do que devem ser boas práticas de programação em PHP. O projecto está no GitHub, em duas branches: a master e a compact, que é igual à outra, mas sem comentários, sem linhas em branco, instruções inline onde é possível, etc. O que se segue é a tradução adaptada do README que acompanha o projecto.

Por esta altura, já toda a gente deve ter ouvido falar do Projecto de Lei 118/XII, que visa actualizar o antigo regime da cópia privada, vertido no artigo 47º artigo 75º1 do Código do Direto de Autor e Direitos Conexos. Se realmente não sabem do que estou a falar, é porque só podem ter estado debaixo de uma pedra nas últimas semanas; de qualquer forma, podem ver tudo o que já foi escrito na blogosfera e na comunicação social, em listas compiladas pela Jonas.

Por falta de tempo, e também para acertar as minhas ideias sobre o assunto, fui adiando a escrita deste post. Felizmente, parece agora que o consenso inicial se desfez, primeiro pelo Bloco de Esquerda, que continua a tomar decisões políticas baseadas na timeline dos hipsters do Twitter, e, depois, pelo CDS-PP, através do seu deputado, representante na comissão parlamentar respectiva e geek de pleno direito, Michael Seufert. Aguardam-se cenas do próximo capítulo, mas já não é tão líquido que isto passe por dá cá aquela palha.

Ora bem, antes de mais quero chutar já um assunto para canto: isto não é sobre pirataria, ok? A SPA, a cada comunicado sobre isto, consegue lá enfiar a pirataria, sabe-se lá como – mas, ou é burrice, ou é má fé. A PL 118 é sobre a cópia privada, que é um acto legal; eu compro um CD, ou um livro, e tenho direito a efectuar cópias para meu uso exclusivo. Pode ser como segurança, pode ser para ter na sala e na casa de banho, whatever.

Repito, a cópia privada não é pirataria e é legal.

Por que é necessário termos um regime jurídico da cópia privada (e, sim, já o temos há muito, esta proposta só o vem actualizar)? Em primeiro lugar, e obviamente, para declarar a cópia privada como um acto legal. Em segundo, menos óbvio, para compensar os artistas por essas cópias privadas.

Legos FTW

Com alguns dias de atraso (cof, cof), aqui ficam algumas notas soltas sobre o Codebits V, por nenhuma ordem em particular.

O bar/restaurante, este ano, era muito longe, e fora do recinto. É um productivity killer. Um tipo sai para ir trincar qualquer coisa às três da manhã, já que se está na rua fuma-se um cigarro, depois aparece outro tipo, fica-se na conversa, mais um cigarro... No ano passado, era muito mais eficaz.

Deu-me a sensação que os speakers têm medo de abordar temas mais mainstream. Não descurar o potencial duma talk sobre linguagens mais comuns, como PHP, C++ ou até Python. Será que é falta de speakers desses temas, ou é pressão de apresentar sempre sobre a ponta da tecnologia?

Por falar em pressão, a pressão sobre o Inglês como língua oficiosa do evento está a destruir algumas boas talks. Há speakers que não estão preparados para apresentar em Inglês, ponto.

Ainda sobre pressão, mas no mundo empresarial, um evento destes só tinha a ganhar com mais talks sobre soft skills – este ano foi dado um passo na direcção correcta, com o Elevator Pitch, mas podia haver outras sobre networking, trabalho em equipa, coaching, por aí.

A organização ouviu as queixas do ano passado, e elevou os altifalantes dos palcos secundários para uns tripés – kudos!

Entrada

Com alguns dias de atraso, aparecem finalmente as notas do 3º dia de Codebits V. Tal como no ano passado, o dia da partida e os dias seguintes são demasiado preenchidos e cansativos para isto aparecer mais rápido – a gerência pede desculpa.

À noite ocorreu uma situação que eu não tinha previsto: como estive acordado até bastante mais tarde do que no dia anterior, a quantidade de malta que já tinha construído o ninho era bastante maior, tendo usado a quase totalidade dos bean bags existentes. Depois de duas voltas ao recinto, encontrei apenas um livre, e tive que me desenvencilhar. Isto é, as minhas costas e traseiro tiveram que lidar com o chão duro o melhor que puderam; apenas duas horas de sono e directamente no chão não foi propriamente a minha experiência ideal de vida.

De qualquer forma, acordei um bocado atrasado, e depois de tratar dos afazeres matinais (vá lá, Sapo, uns vestiários – eu já nem peço uns chuveiros; é que trocar de roupa na casa de banho dá uma trabalheira do demónio) e do pequeno-almoço, incrivelmente, ainda cheguei a tempo de apanhar as talks que queria ver ao vivo. Provavelmente, algum atraso deve ter jogado a meu favor.

Vista geralO dia começou bastante bem, atendendo às circunstâncias – os dois bean bags aguentaram-se no sítio sem me deixarem cair (em grande parte por ter evitado mexer-me desde que me deitei, incluindo durante os 30 minutos que habitualmente demoro a adormecer), a manta que mafiei à minha esposa é muito melhor que aquela coisa estranha que a TMN ofereceu no ano passado, não dormi mais do que o esperado (até acordei antes do despertador, what about that?) e as únicas coisas más foram as do costume: ter que fazer uma gincana terrível para trocar de roupa na casa de banho e ter acordado com o nariz completamente entupido (não estou a ficar melhor, não). Até tive tempo para o meu ritual matinal do costume (cigarro » pequeno-almoço » café » cigarro) antes de começarem as talks...

 Categorias
 Arquivo
 Projectos em Destaque
 Últimas Postas no Blog
 Últimos Comentários do Blog