Mentawai Trip – Paraíso do surf (parte 1)

Há algum tempo eu e minha amiga Bárbara vinhamos planejando fazer uma trip para Indonésia, Mentawai, especificamente. É uma viagem que quase todos que surfam querem fazer, pois a promessa de ondas perfeitas é algo extramente tentador. Bárbara estava de partida para Austrália em pouco tempo para fazer um intercâmbio, então para ela seria bem mais fácil chegar à Indonésia do que para mim, que continuava aqui no Brasil.

Bom, alguns meses se passaram até que a idéia foi amadurecendo, até porque Bárbara já estava juntando uma grana pra isso lá na Austrália. Eu ainda estava aqui, ralando pra conseguir juntar alguma grana para pelo menos poder pagar a passagem, que é a coisa mais cara, por voltar de 1600 dólares a mais barata. Mesmo com esse esforço, a data de comprar as passagens foi chegando e eu ainda não tinha grana suficiente para elas, e ai foi batendo aquele desanimo. Acho que praticamente eu falava todos os dias sobre a vontade de ir para Indonésia para o Eduardo (amigo), e todo dia ele me incentivava a ralar pra conseguir essa viagem, principalmente para terminarmos o software que estavamos desenvolvendo e poder bancar os custos da viagem. Um belo dia, eu estava meio desanimado, pois a data de comprar as passagens e pagar os 25% da reserva do SurfCamp que iriamos nos hospedar já estava bem perto, eu ainda não tinha todo o dinheiro que precisava, até que Dudu sacou o cartão de crédito e disse pra eu comprar a passagem logo, resolver tudo e ir viajar! Quase tive um treco de tanta felicidade, não acreditei que estava ganhando esse presente! Ele deve ter ficado de saco tão cheio que decidiu fazer isso :p

Não me demorei pra acordar a Bárbara, lá do outro lado do mundo, pra contar a notícia que finalmente iamos realizar o sonho de surfar aquelas ondas perfeitas! E assim começam os preparativos para viagem.

A procura por passagens acabou logo pois um amigo André Toppel, da Le Monde Turismo, que já conhece o surfcamp que ficarei hospedado e já foi para lá 2x. Consegui um preço super bom com a ajuda e paciência do André.

Começou também a busca por equipamentos pra levar, e o primeiro que me preocupei foram botas de surf. A maior parte dos picos de surf lá são corais,  eu não estava afim de rasgar meus pés e acabar com a viagem. Me preocupei também com ter streps e cordinhas novas, porque é um saco ficar lá no outside ou na zona de arrebentação, tomando todas na cabeça porque seu equipamento te deixou na mão.

Leve sempre um número maior ou igual de streps/cordinhas que ao seu número de pranchas, pois lá não há surfshops para comprar equipamento sempre que precisar. Comprei algumas parafinas para água quente também, além da Bárbara estar levando um kit de conserto de prancha, indispensável caso você abra um buraco em uma delas.

  • Dicas

Depois de muita pesquisa sobre a Indonésia, é bom levar também um bom protetor soltar, óculos de sol e boné, para se proteger do sol escaldante, além de um bom repelente contra mosquitos. Algumas pessoas se perguntam se é necessário visto para entrar na Indonésia, e resposta é sim, mas ele é obtido na entrada do país ante a um pagamento de 30 dólares. Para estadias de mais de 60 dias, o visto deve ser requisitado no consulado da Indonésia aqui no Brasil.

  • Quiver

Muitos dizem isso e aquilo sobre as prachas que se deve levar para Indonésia, mas a realidade é que você tem que levar aquilo que está acostumado e seguro de surfar, as pranchas que estão no pé. Óbvio que cada pracha se comportará de forma diferente no fundo de coral, pois lá as ondas são mais rápidas e cavadas. No meu caso, que não sou um surfista de estilo agressivo e todas as minhas pranchas tem fundo quase flat e alguma borda, o máximo que vai acontecer é eu precisar pegar as ondas um pouco mais atrás, para não entrar de bico na água. Assumo que ter uma prancha round, com quilhas quad ou tri-quad pode te ajudar a entrar de forma mais fácil nos tubos e te dar mais segurança e mares de maior tamanho, mas isso é uma questão pessoal que prefiro manter. Meu quiver e formado uma um Fish 5’8″ Flashback da JS, uma Mini Simmons bi-quilha e uma Mushroom tri-quad, ambas 5’4″, obtidas com o apoio do shaper Victor Schubnel, do The Buddha Project.

  •  Transporte

Para chegar nas Mentawais, existem alguns métodos, como Speed boat (mais caro e rápido) e Ferry boat (mais lento e mais barato). Nosso pacote no Nyang-Nyang Surf Camp, o surfcamp mais barato das Mentawai, já incluia o translado via ferry boat, mas infelizmete os horários do ferry mudaram logo após comprarmos nossos voos, então ficamos sem ferry para ir para o sufcamp. A solução foi contratar um speedboat por 850 dólares, dividido por 7 pessoas deu aproximadamente 120 dólares. Por sorte conseguimos arrumar 5 pessoas para dividir o barco conosco, senão seria impossível chegar à Nyang-Nyang.

Quase esqueço de citar. Os barcos para Mentawai saem de Padang, mas os voos internacionais para Indonésia chegam em Jakarta, logo, você, precisa comprar algum voo para Padang, que pode ser obtido na Lion Air, por mais ou menos 60 dólares cada perna.

Faltam duas semanas para a viagem, ainda falta contratar um bom seguro viagem que cubra esportes radicais e esperar o dia do embarque. O voo saindo de São Paulo parte para Abuh Dahbi, depois chego em Jakarta, onde encontro minha irmãzona Bárbara, vinda da AUS, então partimos para Padang e pegamos o barco dia seguinte, chegando na manhã do dia 09/10 na ilha. Depois disso, muito surf!

Conto mais sobre a viagem logo após o embarque, porque somente a viagem de avião para lá já é uma aventura por si só, variando de 2 à 3 dias de viagem.

Valeu e até!

Cerveja Artesanal

Desde algum tempo venho produzindo cerveja artesanal, mas a coisa ficou mais séria e formou-se o Suburbreja, grupo de cervejeiros do suburbio do Rio de Janeiro.
Para saber mais do que se passa, visitem http://suburbreja.com e la vocês podem encontar mais sobre a produção de cerveja artesanal, receitas, entre outros.

 

Até +!

STK – Small Toolkit

Desde algum tempo, vinha amadurecendo a idéia de escrever uma toolkit de widgets básica baseada em Xlib… janelas, botões, textbox, progressbar, coisas simples assim que às vezes ajudam a criar programas simples para fins específicos. Bom, isso já existe, não há novidade nenhuma, pois para ambientes XWindow, existem inúmeras toolkits para desenhar interfaces gráficas, como GTK+, Qt, wxWidgets, etc. Basicamente já utilizei algumas delas em projetos que trabalhei ou coisas pessoais, mas meu desejo mesmo era escrever a minha. Depois de quase 1 ano pensando esparsamente nesta idéia, um dia, depois de uma viagem de 6 horas entre SP e RJ, cheguei em casa, encontrei meu primo, tomamos umas cervejas belgas e eu disse à mim mesmo: É hoje que eu começo a escrever esse negócio.

Logo após meu primo ir para sua casa, sentei e começei a ver como funcionava a Xlib. Ehhhh coisa estranha. Biblioteca doida demais, mas interessante ao mesmo tempo. Como a Xlib não te oferece widgets, mas somente primitivas geométricas e janelas básicas, tive que começar a ler códigos e códigos alheios para entender seu funcionamento. Depois de ver como eu poderia ter pelo menos um janela básica, era hora de começar a pensar como eu ia escrever o event listener dos widgets, o cara basicamente que trata os eventos que acontecem com os widgets, como click, drag, keyboard, etc. Passei metade da noite escrevendo o event listener, depois uma janela que se registrasse nele e respondesse à eventos. De primeira funcionou! Fiquei muito feliz, pois era o embrião de uma toolkit já!

No dia seguinte resolvi escrever botões, pois são essenciais para que ações sejam tomadas dentro de um programa com UI. Passei  meu dia escrevendo o botão, e no final, tinha um quadradinho que respondia à clicks e chamava callbacks, foi o máximo! No outro dia eu escrevi os efeitos do botão, para que desse a impressão de estar afundando quando pressionado. Depois de mais alguns ajustes no dia seguinte, resolvi que era hora de fazer um textbox, tanto para entrada, quanto para saída de texto. Como sou um belo preguiçoso (afinal sou programador), resolvi ir catar os fontes de alguém para ver se dava pra copiar algo, mas para minha frustração e sorte (explico depois), não achei nenhum código que eu pudesse adaptar facilmente ao meu.

Iria dar mais trabalho copiar e ajustar os códigos que eu achei do que escrever o meu próprio, o que mesmo assim, não me fez escrever o textbox logo em seguida. Conversando com um amigo, Rodolfo Lima, um ótimo programador que também já tinha feito uma toolkit gráfica, perguntei, “Cara, como você fez a entrada de texto da tua toolkit?”, e pra minha surpresa, ele disse, “eu não fiz, ia dar trabalho demais, é complicado e eu não tinha tempo pra escrever”. Ele me encorajou a escrever a minha! Por sorte (a sorte citada anteriormente que não parecia sorte nenhuma) de ter lido tanto código de pessoas que tinham feito isso, consegui pegar o conceito e comecei a escrever a minha, sem medo de fazer besteiras ou simplesmente não conseguir.

Depois de dois dias, voilà, tinha uma textbox que eu conseguia digitar texto, com rolagem vertical e tudo. Claro, era (ainda é) bem básica, tinha alguns problemas, agora resolvidos! Ela quebra um galho pra maioria dos casos. Após essa pequena jornada, comecei e pensar em outros widgets, para realmente ter algo que alguém pudesse usar para criar aplicações básicas. Ontem eu terminei minha progress bar, o resto eu deixo para vocês verem, tanto como código quanto como vídeos que eu tenho gravado em cada etapa do desenvolvimento.

Fontes do projeto:

https://github.com/gabrield/stk

Vídeos:

http://www.youtube.com/playlist?list=PLGB6MLZuwlwryn4u2ttf3EbYDe2D6TDnZ&feature=view_all

Feedbacks, dicas, críticas, entre outros, são bem-vindos!

Abraços!!!

Brincando com eLua + MBed

 +  

Há algumas semanas atrás, ganhei de presente uma placa de desenvolvimendo MBed LPC1768, doada pelo Mauro Baraldi. Uma doação muito bem recebida, que vai gerar outro post aqui logo logo! :)

Bom, fiquei olhando pra ela uns dias até que o Dado Sutter, meu jedi preferido e amigo, resolveu me ajudar a colocar eLua neste briquedo e fazer uns leds piscarem. O processo é tão simples que eu não acreditei muito quando vi a coisa funcionado. Vou tentar explicar da forma mais fácil, usando o eLua Builder. Crie sua conta lá e à partir dai, podemos começar! O processo é simples… Assim que estiver conectado, verá uma tela e o botão “New Project”. Clique nele e isto o levará à página onde as definições do build serão definidas.

Nesta nova página, há um campo “Project Name” onde você pode definir o nome do projeto, pois ele ficará guardado na sua conta caso queira reutiliza-lo. Logo abaixo há “Target Platform”, uma lista com as placas alvo que eLua pode ser compilada. Escolha “MBED”. Há outras opções mais avançadas, como colocar os scripts dentro da imagem binária que será gerada, etc, mas isso fica pra outro post. :p

Após este processo, na parte de baixo da página, existe o botão “Save and Generate”. Clique-o e uma janela vai aparecer, oferecendo a imagem binária e o conteúdo todo da imagem, como um arquivo zip. Clique sobre “Download binary image”. Agora é hora de colocar a imagem na placa, escrever um pequeno script para piscar leds e acessar a placa via screen para ver os resultados.

Assim que a MBed é conectada à USB do seu computador, ela é montada como um dispositivo de armazenamento (pelo menos no Mac OS/X e Linux). Algumas distros Linux não montam automaticamente, mas ficam com o ícone ou algo similar para que o dispositivo seja montado. Após montado, copie a imagem binária que foi baixada para dentro da placa. Pronto, agora é só apertar o botão em cima da MBed para reinicializa-la e voilà, eLua já está instalada na sua placa! Ai você me pergunta – “Mas… a placa não faz nada ainda, porque?” – E eu respondo – “Pois ainda vamos escrever o script para rodar nela”. Copie o código abaixo para um aquivo “piscaled.lua”.

-- eLua blinking led example, the Hello World of embedded :)

local uartid, invert, ledpin = 0, false
if pd.board() == "SAM7-EX256" then
  ledpin = pio.PB_20
elseif pd.board() == "EK-LM3S8962" or pd.board() == "EK-LM3S6965" then
  ledpin = pio.PF_0
elseif pd.board() == "EAGLE-100" then
  ledpin = pio.PE_1
elseif pd.board() == "STR9-COMSTICK" then
  ledpin = pio.P9_0
elseif pd.board() == "LPC-H2888" then
  ledpin = pio.P2_1
elseif pd.board() == "MOD711" then
  ledpin = pio.P1_7
  uartid = 1
elseif pd.board() == "ATEVK1100" then
  ledpin = pio.PB_27
  invert = true
elseif pd.board() == "STR-E912" then
  ledpin = pio.P6_4
elseif pd.board() == "ELUA-PUC" then
  ledpin = pio.P1_20
elseif pd.board() == "ET-STM32" then
  ledpin = pio.PA_5
elseif pd.board() == "STM32F4DSCY" then
  ledpin = pio.PD_13
elseif pd.board() == "MBED" then
  ledpin = mbed.pio.LED1
  mbed.pio.configpin( ledpin, 0, 0, 0 )
elseif pd.board() == "MIZAR32" then
  ledpin = pio.PB_29
  invert = true
else
  print( "\nError: Unknown board " .. pd.board() .. " !" )
  return
end

function cycle()
  if not invert then
    pio.pin.sethigh( ledpin )
  else
    pio.pin.setlow( ledpin )
  end
  tmr.delay( 0, 500000 )
  if not invert then
    pio.pin.setlow( ledpin )
  else
    pio.pin.sethigh( ledpin )
  end
  tmr.delay( 0, 500000 )
end

pio.pin.setdir( pio.OUTPUT, ledpin )
print( "Hello from eLua on " .. pd.board() )
print "Watch your LED blinking..."
print "Enjoy eLua !"
print "Press any key to end this demo.\n"

while uart.getchar( uartid, 0 ) == "" do
  cycle()
end

Este código serve para todas as placas que o builder suporta. Poderia dar uma limpada nele para só servir para MBed, mas decidi deixar assim, mais genérico. Copie este arquivo para dentro da placa da mesma forma que fez com a imagem binária de eLua. Novamente, reinicie sua placa. Agora acessaremos a placa usando screen. Caso não tenha o screen instalado no Mac, pode instalar via HomeBrew. No Linux, isto dependerá do seu gerenciador de pacotes. Deixo a instalação do screen por sua conta :p. No momento, estou no Mac OS/X e para acessar minha placa, usei o seguinte comando:

sudo screen /dev/tty.usbmodem622 115200 8n1

OBS: O dispositivo /dev/tty.usbmodem662 pode mudar, então cheque caso não seja o mesmo. No Linux, com certeza o dispositivo será diferente, algo como  /dev/ttyUSB0, então olhe antes de acessar via screen.

Pressione enter e normalmente você estará dentro do shell eLua. Digite “lua /semi/piscalua.led”. Isto chamará o script que colocamos na placa e o led da MBed deverá comecar a piscar. Para sair do programa, a sequência de teclas Ctrl+z funciona. Comentários são bem-vindos :) Espero que você possa fazer muito mais com sua MBed à partir daqui. Até!

A neve acabou, mas as lembranças ficam…

… dos bons dias de snowboard com bons amigos…

Sem mais palavras para essa época muito boa que foi o inverno nos Alpes Franceses, com amigos brasileiros, fraceses e muitos mais! Com -22 °C, estavamos sorrindo, alucinados para o teleférico subir de novo e termos um pouquinho mais de emoção na descida seguinte. Alguns acidentes, cortes, tombos, mas a alegria é o que conta mais!!! Agradeço à todos que participaram desses maravilhosos momentos. Essas fotos que posto exemplificam um pouco de tudo de bom que passei nessa temporada :)

Ainda achei uns videos filmados pelo baiano Vinicius, que trabalha no mesmo laboratorio que eu e participou da maioria dessas jornadas na montanha também:

Chamrousse Snowpark

Carioca em Les 2 Alpes

Até :)

Escola de verão de linguagem funcional para aplicações paralelas e concorrentes

Dos dias 11 à 22 de junho, estou participando de uma escola de verão sobre  linguagem funcional para aplicações paralelas e concorrentes, no CEA/Caradache, sul da França. Um lugar para aprender um paradigma completamente diferente de programar, principalmente para quem é acostumado com linguagens imperativas.

Basicamente a linguagem usada para aprendizado aqui é Haskell. Mostro um exemplo abaixo de um dos exercicios dados no curso:
addAll :: [Int] -> [Int]
addAll [] = []
addAll = map (\x -> x - 1)

addAll [1,2,3,3]

Essa função decrementa 1 de todos o elementos de uma lista. Nesta função, entram conceitos interessantes, como mapping, lambda calculus, pattern matching, etc… Para quem nunca viu linguagem funcional na vida, é uma coisa bem estranha largar todos os paradigmas aprendidos e ter que pensar de uma forma totalmente diferente, ainda mais quando se tem que usar recursividade quase à todo momento, sendo ela um das partes mais importantes de qualquer linguagem funcional.

Bom, estou somente no quarto dia de curso e a coisa esquentou bastante. Estou meio atrasado nas listas de exercicios, e acho que até o final do curso não as termino, mas espero me dedicar mais ao longo do tempo e usar Haskell pra mais coisas futuramente. Vou aproveitar o material distribuido pelos instrutores para aprender mais depois. O link com o material usado aqui se encontra logo abaixo, assim como outras referencias de Haskell que foram passadas aqui:

Espero postar talvez algumas fotos do Chateau que estamos hospedados, pois ao redor a paisagem é bem bonita :) Futuramente também pretendo postar mais alguns codigos pra ajudar iniciantes em linguagem funcional e se acharem e seguir em frente.

PS: Desculpem pela falta de acento em certas palavras. Estou usando um teclado francês, então é um pouco dificil :p

UPDATE 20/06/12

Slideshow de fotos da escola de verão:

Este slideshow necessita de JavaScript.

Até + !!!