Bem-Vindo ao DreamsInCode

DreamsInCode é um site maioritariamente sobre programação, com os ocasionais desvarios do programador pela real life.

Terá especial incidência nas linguagens de programação C#, PHP e ActionScript e em projectos relacionados com jogos de loto (incluído o jogo europeu Euromilhões e o nosso velhinho Totoloto), com geração automática de imagens na web (Imagick) e sistemas de tempo e data.

Salvo nota em contrário, todos os conteúdos aqui publicados são gratuítos e, no caso de software, de código aberto, ao abrigo da Licença Creative Commons 2.5 Portugal BY-NC-SA. Consultem aqui os termos da mesma.

Este site não é suportado por uma empresa nem por publicidade; é suportado inteiramente por mim. Se encontrarem aqui algo que vos dê mesmo muito jeito, façam uma doação. As vossas doações ajudam com os custos do servidor.

Ir para o início do blog »

Projectos em Destaque

Eleições e Número de Deputados

Aplicação desenvolvida para testar as propostas de dois dos candidatos às eleições legislativas de 2011 quanto ao número de deputados na Assembleia da República.

Outros Projectos @ 14-06-2011 às 23:48


SisRedEM v2

Programa para gerar e imprimir apostas para o Euromilhões a partir de tabelas pré-feitas de sistemas reduzidos. Inclui gerador aleatório, reordenador de números e verificação de chaves por alguns filtros.

SisRed Series @ 10-04-2008 às 00:00


Últimas postas no blog

Aqui há dias, por ocasião de ter atingido 500.000 subscritores, C. G. P. Grey colocou um vídeo com respostas a várias perguntas que lhe foram colocadas. Ao minuto 1:24, surge (traduzido):

O que é que achas que devia estar no currículo escolar mas não está? - Jamaal, Arizona

Programação informática. Eu fiquei meio chocado e horrorizado quando comecei a dar aulas no Reino Unido ao descobrir que não existia nenhum ensino real de programação informática.

Claro, existe um determinado número de aulas num dia, e todos querem que a sua disciplina de estimação seja ensinada nas escolas, pelo que a pergunta igualmente importante é o que deitar fora para arranjar espaço para a programação informática...

Interlúdio: o resto do vídeo vale bem a pena, assim como qualquer um dos vídeos dele. Subscrevam o canal (link no final).

Eu não podia concordar mais com esta opinião; mau seria, sendo eu programador. Precisamente por isso já ando a ensinar programação, usando Python, à minha filha mais velha. Não vou entrar em grandes considerações sobre porque é que a programação é importante, ou porque é que escolhi Python – talvez o faça um destes dias; duma forma resumida, programar é um exercício de lógica, resolução de problemas e raciocínio científico.

A parte problemática vem depois:

... e, sem a mais pequena hesitação, eu livrar-me-ia das aulas de língua estrangeira – afinal, a programação está-nos a aproximar cada vez mais de um tradutor universal.

Pois, fácil de dizer para um anglófono...

Para tirar já isto do caminho, ainda estamos a algumas décadas de um tradutor universal. Olhando para as dez línguas mais faladas (por nativos e não-nativos), saltam logo à vista alguns problemas bicudos, logo a começar pela primeira delas, o mandarim, e apanhando ali o hindi em quarto. Considerando até que nos focávamos apenas na lingua franca da ciência e da Internet, o inglês, os tradutores automáticos até para alemão – afinal, parte da mesma sub-família que o inglês – apresentam dificuldades. Ainda não estamos lá.

Originalmente tinha aqui uma tangente sobre a prevalência do inglês sobre o mandarim, mas, como é habitual nas minhas tangentes, ficou grande demais. Foi promovida a post de pleno direito, aqui.

mjamado's YouTube subscriptionsMas para além de ser a lingua franca da tecnologia, ou talvez por isso mesmo, os conteúdos anglófonos também são os mais abundantes e, embora seja uma generalização, perigosa como todas as generalizações, os de melhor qualidade. Como se pode ver pelas minhas subscrições no YouTube, aqui ao lado (links e descrições no fim), sou um grande apologista do vídeo enquanto ferramenta de aprendizagem para micro-temas, ou para pinceladas grossas sobre uma dada temática.

Para ser totalmente honesto, continuo a preferir livros para a minha área profissional e para aprofundar determinados temas. Também na vertente recreativa, primeiro o livro, depois o filme ou a série.

Eu não tenho problema nenhum em ver estes (e outros) conteúdos em inglês. Felizmente, tive sempre excelentes professores de inglês – um grande beijo para a minha professora de Inglês do ciclo, a professora Carla Costa – e a minha área profissional (e os estudos até lá) forçam-me a ler, escrever e "pensar" em inglês durante grande parte do dia.

O problema coloca-se quando quero partilhar alguma coisa com a minha esposa, que teve uma educação de língua estrangeira absolutamente pavorosa, ou com a minha filha mais velha, que está agora a começar a aprender em regime de enriquecimento curricular – que nem sequer é obrigatório, o que acentua ainda mais as diferenças educativas.

Neste momento, os recursos existente na 'Net são imensos; dá vontade de dizer "no meu tempo não havia nada disto". A esmagadora maioria está em inglês. Os conteúdos portugueses são poucos, e os que existem, de fraca qualidade (ai, estas generalizações).

Para voltar à sugestão de C. G. P. Grey, retirar o ensino da língua estrangeira para ensinar programação, é exequível em países não anglófonos? Óbvia e dolorosamente, não.

Portanto, pergunta ainda mais importante: as crianças de países anglófonos, partindo do princípio que os pedagogos desses países não andem a dormir durante muito mais tempo, terão uma vantagem educativa e, por extensão, competitiva, em relação às crianças do resto do mundo? O que é que podemos fazer para anular essa vantagem, dado que não podemos prescindir do ensino do Inglês? Começá-lo mais cedo, para que as crianças atinjam a fluência também mais cedo? Quão mais cedo? Dar-lhe uma maior carga horária, nomeadamente em regime obrigatório, ao contrário do que é feito actualmente? Ou reduzir carga horária noutras matérias? Quais?

A minha preocupação não é tanto com as minhas filhas, mas sim com a educação em geral. Não faço segredo sobre o meu sistema de educativo preferido: a tutoria, focalizada nos interesses da criança, desde o mais cedo possível. Possível por padrões actuais? Nem por sombras. Não vejo solução. Não há alguém a quem claramente apontar o dedo ou exigir medidas, sobretudo por não ter ideia absolutamente nenhuma de que medidas seriam necessárias.

É um enigma. Resolvê-lo poderá ser essencial para prepararmos competitivamente a próxima geração para os desafios do futuro.

As minhas subscrições no YouTube

Por ordem alfabética, para não ferir susceptibilidades...  ;)

  • C. G. P. Grey – Micro-temas explicados em pouco tempo, normalmente com recurso a animações e infografias animadas. Quase todos os vídeos têm um creeper do Minecraft, a diversão de os procurar é um bónus adicional. Generalista;
  • Crash Course! – Na realidade, este canal contém seis séries diferentes: Biologia, História Mundial, Literatura Inglesa, Ecologia, História dos EUA e Química. Confesso que ainda só vi a série sobre História Mundial, mas a qualidade deve ser transversal. Apresentado pelos irmãos Green, Hank e John, que também mantêm o VlogBrothers e não só. Aspecto e conteúdo muito profissional;
  • MinutePhysics e MinuteEarth – Criados por Henry Reich, animações desenhadas à mão sobre física e o nosso planeta Terra, respectivamente. Este último começou agora em Março (à data que escrevo isto, ainda só tem um vídeo). Dica: nenhum vídeo tem, na realidade, apenas um minuto;
  • Numberphile – Como o próprio nome indica, um canal sobre números. Os convidados são sempre pessoas com imenso entusiasmo – e conhecimento, claro. O criador, Brady Haran, tem outros canais interessantíssimos;
  • SciShow – Apresentado por Hank Green (metade dos VlogBrothers), sobre, adivinharam: ciência. Normalmente, micro-temas, mas alguns são explicações para pessoas "normais" de temas mais vastos;
  • SmarterEveryDay – Conteúdos com o que é normalmente chamado de "ciência prática". Destin, o criador, tem um entusiasmo muito contagiante;
  • Vsauce – Canal sobre tudo e um par de botas, mas com alguma incidência em ciência e tecnologia. Teve alguma exposição memética recentemente com o vídeo The Science of the Friend Zone.

Há muitos outros, para todo o tipo de gostos. Inclusivamente, há outros que eu gostava de seguir, mas, hey, o dia ainda tem uma quantidade limitada de horas...

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

Este post é uma tangente deste.

Porque é que é o inglês a lingua franca da ciência e tecnologia, e não o mandarim?

Soldados Americano, Chinês e Inglês com as respectivas bandeiras
Foto por: Governo do Reino Unido, Outubro de 1943 – Domínio Público

Quando consideramos a quantidade de falantes nativos, temos (em estimativas de 2010) cerca de 955 milhões de nativos em mandarim, basicamente na China (Taiwan e Malásia contribuem com muito pouco, Singapura ainda com menos), e cerca de 359 milhões em inglês, espalhados por Reino Unido, EUA, África do Sul, Austrália, Canadá e uma série de outros.

Esta dispersão já poderia ser justificativa, mas a verdade esconde-se na quantidade combinada de falantes nativos e não-nativos: 1150 milhões para o mandarim, contra 1000 milhões para o inglês. A diferença esbate-se, a dispersão geográfica joga a favor do inglês e conclui-se, de caras, que a esmagadora maioria do total de falantes de mandarim está enfiada no mesmo sítio: a China. 

Mas falta ainda explicar porque é que o inglês se espalhou tanto entre não-nativos (quase duas vezes mais não-nativos do que nativos), ao contrário do mandarim, o que é fácil: o inglês é a língua nativa dos países onde começou a revolução industrial (o Reino Unido) e a tecnológica (os EUA); o mandarim é a língua nativa duma ditadura comunista, de costas voltadas para o ocidente, cuja única tentativa de apanhar o comboio da revolução industrial, com mais de 100 anos de atraso (o Grande Salto em Frente de Mao Tse-tung) redundou num falhanço de proporções épicas.

Os países que efectivamente quiseram acompanhar as revoluções industrial e tecnológica tiveram que entender o know how que lhes era transmitido. E "know how", assim mesmo em inglês, foi intencional.

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

Codebits VI
Como já é  habitual, a semana a seguir ao Codebits é bastante caótica; este ano, por motivos profissionais, essa semana transformou-se rapidamente em quase três meses. Durante esse tempo, este post foi sendo escrito em quatro dispositivos, por três zonas do país, e esteve quase para não ser publicado. Como já estava quase pronto, cá está. So, back to the  point...

Quando acordei, já o recinto fervilhava com movimento, e as primeiras talks estavam a arrancar. Dei a primeira ronda como perdida e fui tentar tirar o aspecto de zombie mal nutrido – sem grande sucesso, diga-se de passagem.

Instalei-me (isto é, deixei-me cair em cima de um puff) para ver a Tools, tools, tools, de Paulo Gaspar. Tendo como tema as diferentes ferramentas necessárias à programação, com especial enfoque no webdev, Paulo Gaspar passou por quase tudo o que era humanamente possível; só fiquei ligeiramente desapontado com a não inclusão do Netbeans – posteriormente, foi-me justificado que nem sequer sabia que o Netbeans suportava outras coisas que não Java.

Esta talk foi interrompida, perto do final, por dois eventos mesmo à Codebits: primeiro, uma mais que merecida homenagem ao Celso Martinho, pai do Codebits, co-fundador do Sapo e all around geek. Tirando a imagem um bocadinho creepy de centenas de máscaras Celsianas ao som do por vezes hipnótico, mas sempre irritante, Nyan Cat, poucas pessoas em Portugal conseguiriam ter a admiração quase consensual duma comunidade da forma como Celso Martinho consegue.

Logo de seguida, no contexto da caça aos badges, o desafio I'll do anything for a badge, que consistia em tomar o palco principal e imitar a coreografia do Gangnam Style. Como a participação foi massiva (porquê , pergunto eu), foi necessário repetir o evento. Isto é, depois do Nyan Cat, duas vezes Gangnam Style. Às vezes ainda acordo com suores frios a pensar nisto...

Depois de Gangnam Style ter atingido mil milhões de visualizações no Youtube, passo a oportunidade de o linkar novamente.

A seguir ao almoço passei mais uma vez pelas equipas que vinha a acompanhar, dar aquele último impulso moral, e cirandei por várias outras equipas. Mais do que a inovação tecnológica, ou o brilhantismo das apresentações, há uma energia no ar, um misto impalpável de excitação, receio e alguma sobranceria fingida, protecção de última linha contra uma auto-estima destruída pelo cansaço e pelo génio que se encontra a cada metro percorrido.

As apresentações decorreram de forma fluida, o sistema de votação não deu o tilt como no ano passado, e até a collective intelligence do público se comportou bastante melhor, votando bastante em projectos com efectivo interesse prático. Por exemplo, o projecto mais votado pelo público, reconhecimento automático de linguagem gestual, é tudo o que um projecto Codebits (e, em última análise, qualquer projecto de startup) deve ser: aliar o poder da tecnologia à resolução de um problema real.

No final das apresentações, infelizmente, tive que iniciar a minha viagem de regresso. Parece que, a cada ano, conforme vou aumentando a hora de regresso, o evento arranja maneira de acabar mais tarde. Já não pude assistir à divulgação dos vencedores, entrega dos prémios e discurso de encerramento de Zeinal Brava.

Fica, como sempre, a sensação de maravilhamento com o que é possível atingir quando existe a motivação correcta – mesmo quando essa motivação está longe de ser monetária. Algo a aprender pelas empresas portuguesas (e pelos sindicatos, já agora).

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

Codebits VI

Inexplicavelmente, ontem esqueci-me de assinalar a The Art of Readable Code, de Pedro Morais, uma talk que devia ser obrigatória em qualquer nível de ensino relacionado com a programação. Muito boa talk.

Depois de uma noite mal dormida (como sempre no Codebits), arranquei logo de manhã para Fast relational web site construction with PHP, de Nelson Gomes. As minhas aspirações foram ligeiramente defraudadas, em parte pelo cansaço, em parte por ter extrapolado mais da descrição do que o que lá estava. Como dizem os namorados americanos nos filmes, it's not you, it's me.

O foco da talk foi quase em exclusivo no motor ORM Doctrine e no motor de templating Smarty, quando eu tinha esperado que fosse mais sobre motores de ORM e templating em geral e depois algumas considerações sobre estas em particular. Não havia rigorosamente nada na descrição que levasse a esta minha conclusão (acabei de verificar novamente) e não sei de onde a fui tirar. Não tenho grande interesse no Doctrine (usamos a nossa própria framework no trabalho) e conheço Smarty de trás para a frente (este site, por exemplo, usa-o). A talk é boa para iniciantes, ou para quem esteja no processo de escolher motores, mas não é o meu caso. O cansaço também não ajudou – fechei os olhos várias vezes.

À tarde, a Move fast & break things, do inenarrável Miguel Gonçalves, era imperdível. Como sempre, o dinanismo é esfuziantemente contagiante, o discurso motivacional é o correcto mas... a crowd é errada. Ele apanhou algum calor na parte de perguntas e respostas, porque esta rapaziada já é a que tem o mindset correcto (não estaríamos cá se não fosse esse o caso). Algumas pessoas levaram a mal o trabalhar mais, trabalhar melhor, o que é compreensível quando estamos a falar de pessoas que já estão em frente a um computador mais de 12 horas por dia. A esmagadora maioria percebeu que o problema não está em nós, e que o principal nem é a quantidade do trabalho, mas sim a motivação com que o fazes; não obstante, o discurso poderia ter sido ligeiramente adaptado, tendo em atenção as características muito específicas da audiência. No entanto, não deixa de ser sempre uma talk imperdível. E foi.

Depois de uma talk menos conseguida no ano passado, Diogo Antunes volta a estar em grande forma com It works on your computer but does it render fast enough. Como alguém que passou as últimas duas semanas a optimizar o rendering de um projecto profissional, estava especialmente ansioso por mais um truque ou outro que pudesse aplicar. Infelizmente, acabei por aprender que já estou a usar todos os truques aplicáveis, mas foi muito interessante ver explicado decentemente aquilo que tive que aprender, às vezes de forma incompleta, nas últimas semanas.

Com especial destaque para as operações de reflow e redraw dos motores de rendering dos browsers, esta talk é especialmente informativa e dada de forma quase irrepreensível (nota-se que o inglês não é a língua nativa).

No final desta talk ainda tive a oportunidade de debater os meus dilemas com o tal projecto profissional com o Diogo e com o sempre disponível André Luís, que só confirmaram o que eu já temia: há um limite para a optimização que um webdev pode fazer; há certos dispositivos que não estão preparados para certas cargas, ponto.

A fechar a tarde, The Yin-Yang of web authentication, de Nuno Loureiro, parte da equipa de segurança do Sapo, e João Poupino, da nova CloudPT. Alguns dos vectores de ataque foram novos para mim (os baseados em timings são especialmente assustadores) e alguns dos métodos de defesa também. Sem dúvida uma das talks com melhor taxa de material aprendido por minuto... ;)

Por exemplo, ao fim destes anos todos, aprendi que CAPTCHA, na realidade, é um acrónimo para Completely Automated Public Turing testes to tell Computers and Humans Apart. Wow.

O plano nocturno foi o sempre hilariante The Amazing Codebits Quiz Show. Eu não sei onde raio o Quiz Master vai buscar certas perguntas (e certas respostas) que não lembram ao demónio. Quanto é um ångström? A sério? Qual é o país com a maior bebida standard? Os países têm uma bebida standard?

Durante grande parte do dia e da noite, fui seguindo alguns projectos de malta conhecida e ajudando no que podia.

Um grupo de estudantes do Técnico resolveram fazer uma aplicação Android que funcionasse como um shout georeferenciado, o que é uma ideia interessante. Pormenor: nenhum deles sabia programar Android. Fui passando várias vezes por lá, a orientá-los pelos vários pitfalls que o Android SDK tem (a última foi aquele problema irritante de não se poder instalar a mesma app quando se muda o namespace).

O KTachyon, que é um programador competentíssimo e de certeza que não precisa da minha ajuda, está com uns colegas a fazer uma aplicação que junte os vários serviços de alojamento de ficheiros, Dropbox, Google Drive e agora o CloudPT. A meio da madrugada, a API do CloudPT estava a dar-lhe um bocado de luta e estivemos a debater durante um bocado o que poderia estar a correr mal. Eu fiquei sem saber muito bem, mas aparentemente ele conseguiu desbloquear a coisa.

O Killercode, que tem sempre ideias muito maradas envolvendo hardware (no ano passado era controlar a MeoBox com o Kinect) anda ali de volta de um Arduino controlado via bluetooth por um Android. Eu disse que era marado.

Passei algumas horas da madrugada com o KTachyon e alguns amigos a discutir um monte de coisas, desde o ainda aftershock da talk do Miguel Gonçalves, o estado do nosso país, o estado da nossa educação (entre os participantes, um professor de biologia, que, a meio da carreira, decide que afinal quer ser é programador - awsome!), dificuldades e oportunidades na nossa área, old school gaming e se os porcos têm ou não asas.

Estamos no último dia. Hoje é que é a doer para muitos participantes. Boa sorte a todos!

Comentários 2 comentários Continuar a ler Continuar a ler »

Codebits VI

RaspberryPiUltimakerDepois de mais um ano de preparação, um excruciante processo de selecção e, para muitos de nós, uma viagem mais ou menos longa, começou um novo Codebits. Não sei como é que conseguem, mas o geek level aumenta sempre. Se no ano passado a parada foi subida com a presença da LEGO, este ano conseguiram trazer não só uma presença oficial das impressoras 3D, através de Erik de Bruijn, da Ultimaker, como também do RaspberryPi, através de Rob Bishop, da RaspberryPi Foundation.

Mas começemos pelo princípio.

A keynote de abertura foi conduzida pelo Celso Martinho, como é habitual, cabendo a Abílio Martins, administrador da PT, a maior fatia, face à indisponibilidade de Zeinal Bava. Vários serviços apresentados (Meo Kanal no iOS – Android, para variar, é mato – API Meo Kanal, novas inovações dos Sapo Labs, mais Sapo Services), mas com uma recepção relativamente morna, no máximo.

CloudPT

Coube à Jonas dar a notícia que obteve a maior reacção da plateia: depois de apresentado o serviço CloudPT, com a disponibilização imediata do serviço para os participantes do Codebits – que, afinal, até nem era segredo desde há alguns dias – revela que, como early adopters do serviço, os 16 GB oferecidos pela plataforma seriam estendidos, para sempre e sem contrapartidas, para 50 GB. A reacção foi estrondosa. A aceitação do serviço, pelo que tenho visto por aqui e no Twitter, tem sido muito positiva. Infelizmente, a integração com Linux restringe-se ao Ubuntu, para já, e eu fiquei um bocado no gelo com o meu Kubuntu (teoricamente, podia puxar as 50 mil dependências do Gnome mas... prefiro não o fazer). Ainda não tive tempo para usar a interface web, que tem muito bom aspecto, por sinal.

A keynote derrapou no horário violentamente – já tinha começado atrasada, e só piorou – e as talks começaram de forma mais ou menos caótica, com muita gente ainda a tentar almoçar. De qualquer forma, ainda consegui apanhar a parte final de RaspberryPi: Past, Present and Future, por Rob Bishop.

Entre conhecer pessoas e discutir projectos com vários grupos, não podia perder Bits to business, how to sell your software, de Brian Suda, que, como é habitual, ofereceu uma talk fascinante, dinâmica e bem humorada sobre criação (e manutenção) de empresas tecnológicas, com temas tão díspares como o controle do tempo de trabalho útil e quando gastar dinheiro da empresa (antes de pagar os impostos, como qualquer contabilista saberá).

Ao final da tarde dirigi-me ao workshop do RaspberryPi. Tenho o meu encomendado, mas era conveniente ter alguém que soubesse o que está a fazer por perto na primeira vez que lhe metesse as unhas. Correu razoavelmente bem, embora a linguagem usada no workshop (Python) não seja exactamente das minhas linguagens preferidas.

Já tinha tido a oportunidade de conversar com o Rob Bishop sobre alguns projectos que tenho em mente para esta plataforma, mas durante a noite ainda os discuti também com Filipe Valpereiro, da InMotion, que, aliás, é quem os está a vender cá. As perspectivas são boas, sobretudo depois do Filipe ter revelado que está a contar comercializar o resto do hardware necessário (touch screens para ligar o Pi).

Indie Game – The MovieAo final da noite, foi projectado o documentário Indie Game – The Movie (vencedor do festival Sundance), que segue o antes, durante e depois de três jogos indie e dos seus developers. Não é um documento técnico, mas extremamente humano, com o enfoque na motivação das pessoas que o fazem, como os seus jogos reflectem as suas falhas e aspirações. Eu recomendo vivamente que comprem este filme – custa apenas $9,99 e está disponível na Amazon, Steam e iTunes por download (sem DRM) ou stream.

Durante as primeiras horas da madrugada cirandei por aí, a conversar sobre os projectos de vários grupos, fui atacado com nerf e fui finalmente arrochar umas horas.

O Codebits segue dentro de momentos.

Comentários Nenhum comentário Continuar a ler Continuar a ler »
 Doar (via PayPal)
 Últimas Postas no Blog
 Últimos Comentários do Blog