NodecopterLX 2013

In October, the first Portuguese Nodecopter event was held in Lisbon. Nodecopter is a hackathon that enables the participants to control real quadrocopters using a programming language. These events started in October 2012, and have since then spread to many different countries. Since there was a big Javascript conference coming up, LXJS, we decided to bootstrap NodecopterLX by inviting their participants.

We had around 35 participants in a total of 11 teams. Luckily, no quadrocopter was harmed and everyone had a blast! There were many demos by the end of the day, and, more importantly, our participants had the chance to learn how to program some cool robots. I’ll leave you with some photos (but you can check all of them over at our Google+ page):

IMG_0987

IMG_1002

IMG_0953

IMG_1008

PS: I’d like to thank our awesome sponsor Flipside, our partners Inspiring, IST, ISCTE-IUL and Instituto de Telecomunicações, Andrew Nesbitt and Gilles Ruppert for being awesome and bringing some extra AR.Drones, and the rest of the team: Daniel Gomes, David Dias, João Jerónimo, Joaquim Serafim, Pedro Dias, Samuel Gordalina and Tiago Carlos. Make sure you follow our Twitter account @nodecopterlx to know when we are preparing the next event 🙂

Chip-8 emulator in JavaScript

A few months ago I read a fascinating article on emulation. Ever since then, I knew that I wanted to learn more about this subject and I set out to build my own emulator. I started with the Chip-8 interpreted language in Java, and then ported it to JavaScript. If you have programming experience, this is a simple and fun project that will take you just a couple of days of reading/learning/coding. I will make a more in-depth post about the basics of emulation when I have the time, but for now I'll just leave the finished project here (try INVADERS):

If you have any ideas for improvement, the code is available on github (Java & JavaScript). Feel free to make a pull request with changes!

Aumento do vocabulário

Já há cerca de ano e meio que estava relativamente estagnado na monotonia do Java, PHP, HTML e CSS. No entanto, trabalhei recentemente num projecto que me permitiu aumentar os meus conhecimentos de linguagens para a web, mais específicamente Javascript.

Há muito que evitava o contacto com o JS, apesar de ter que recorrer com frequência a scripts pré-feitos. A linguagem em si é sintacticamente parecida a Java apesar de ter a liberdade de ser dynamically-typed, tal como o PHP. Isto traz beneficios como uma menor quantidade de código necessário, mas também pode tornar o script mais confuso de ler e manter.

Em simultâneo com o Javascript, peguei também no jQuery. Fiquei completamente siderado com a facilidade de manipulação do DOM que esta biblioteca nos proporciona. A sintaxe do jQuery é bastante diferente do Javascript "normal", torna-se quase uma Domain Specific Language.

Começar a utilizar estas duas ferramentas foi ligeiramente complicado, sentimo-nos à deriva no meio de um oceano. Por um lado estamos a aprender uma linguagem nova e não sabemos bem por onde começar nem como resolver problemas concretos, por outro estamos a utilizar uma biblioteca enorme com muitos anos de desenvolvimento em cima. No entanto, isto também tem as suas vantagens. Qualquer que fosse a minha duvida, era só perguntar ao meu fiel companheiro e acabava 80% das vezes no Stack Overflow com a resposta certa.

Com o Javascript e o jQuery criei com mais uns amigos um site para concorrermos ao concurso do Sapo Mapas. Ainda faltam uns retoques mas vamos submetê-lo no final da próxima semana. Ficámos muito satisfeitos com o resultado final. Fingers crossed!

Por fim, tive também contacto com uma linguagem de programação da Microsoft: F#. Já tinha ouvido falar bastante da linguagem, mas nunca a tinha experimentado. Tive oportunidade de participar num workshop no Zoomin Fest 2011 em que fomos apresentados à sintaxe e fizemos alguns exercícios. Gostei bastante da experiência e o workshop foi bem conduzido. Do paradigma funcional já tive contacto com Scheme e Prolog, pelo que havia pouca manobra para surpresas. No entanto, o F# tem alguns elementos engraçados como o match que nos permite ter uma espécie de switch case e algumas funções para lidar com listas que dão muito jeito e reduzem bastante o código que tem que ser escrito.

Destas três linguagens (na verdade são duas linguagens e uma biblioteca), penso que irei dar bastante uso apenas ao Javascript e  jQuery. O F# ficará pela pequena experiência no workshop.