Volta às aulas

Estou voltando às aulas da faculdade amanhã e isso talvez signifique menos tempo para o blog. Além disso já nos últimos dias eu me vi bastante ocupado com distrações banais e outras nem tanto, coisas da mente criativa, e deixei ele meio de lado.

Este novo semestre tem potencial para ser MUITO legal e eu acho que isso também pode refletir positivamente no conteúdo do blog.

Enfim, tenho algumas promessas do que irá vir pela frente. Uma série sobre a linguagem Chuck, alguns reviews de jogos e o resto da série sobre a linguagem C. Talvez também alguns posts filosóficos, sei que tem pessoas que sentem falta deles :)

Estou jogando Pokémon HeartGold ultimamente e é muito viciante e nostálgico. Also cuidado com a eplepsia

ChucK: Introdução, Hello World

Introdução

Este texto é uma leve modificação de um relatório que entreguei semestre passado para a cadeira de Computação e Música. Ela faz uma introdução rápida, mas nem tanto, da linguagem ChucK além de uma comparação entre dois protocolos de comunicação usados no mundo da computação musical: OSC e Midi. O discurso é voltado ao público que já está um pouco familiarizado com técnicas de síntese auditiva e programação. Onde possível eu tentei colocar referências, bem como exemplos ilustrativos.

O artigo original está aqui. Esta versão ficará dividida em uns vários posts para se adequar mais ao formato do blog, além de ter algumas correções e adições. Eu espero vocês gostem e deixem suas opniões, dúvidas e sugestões nos comentários.

Chuck

ChucK é uma linguagem de programação de propósito geral voltada para o nicho de programação sônica. Um programa ChucK é um simples script que roda numa máquina virtual. O grande atrativo é o suporte à execução concorrente dos programas facilitado pela VM, que também se encarrega do sincronismo temporal (strongly-timed).

Existem também várias facilidades para modificar os programas que estão atualmente na máquina virtual sem que ela tenha que ser reiniciada o que permite que seja feita programação on-the-fly ou live-coding.

Foi criada no Princeton Sound Lab por Ge Wang e Perry R. Cook e é usada pesadamente na Princpeton Laptop Orchestra (Plork). ChucK é distribuída sob uma licensa opensource e o código está disponível no site oficial.

Features

  • Programação Concorrente
  • Mecanismo de sincronismo temporal imbutido na máquina virtual
  • Síntese em tempo real ou não (processar samples e gravar num arquivo, por exemplo)
  • Programação textual (em oposição a, por exemplo, PureData)
  • Unit Generators ( geradores de função ) padrão e extensíveis
  • Suporte a comunicação por MIDI e OSC
  • Suporte a input de vários periféricos (mouse,teclado,joysticks,acelerômetros, etc..)

Uso

ChucK autalmente se encontra na versão 1.2.1.3 e possui distribuições para as plataformas Linux, MacOS e Windows.

O interpretador é um programa de linha de comando e pode ser invocado da seguinte forma, assumindo que script.ck é um programa ChucK:

chuck script.ck

Também pode ser encontrado no site oficial um software chamado MiniAudicle, que é uma pequena IDE para escrever código ChucK (contando com syntax highlighting), mandar ele para ser executado na máquina virtual e gerenciar os diversos programas que rodam concorrentemente. É bastante interessante para propósitos de live-coding.

Um tour pela linguagem

A seguir, apresentarei exemplos e demonstrações de construções comuns da linguagem, vários exemplos demosntrados aqui são adaptações livres do código encontrado no manual.

Hello World

Este é um Hello World em ChucK.

// SinOsc é um oscilador de onda senoidal
SinOsc s => dac; // cria o oscilador e guarda na variável s
440 => s.freq; // muda a frequência da onda para 440Hz

2::second => now; // manda tocar por dois segundos

<<< "Hello World!">>> // imprime "Hello World" na tela

Ao rodar este exemplo você irá ouvir uma onda seno na frequência do Lá padrão (440Hz). É parecido com um assovio bem suave.

Eu fiz questão de colocar comentários explicando o que as linhas fazem. Lendo o resto do texto você estará apto a entender o porquê delas fazerem isto.

Referências

Além destes também siga os links no meio do post :)

Review: Machinarium

Eu comprei este jogo no Humble Indie Bundle e fiquei vidrado, ele é lindo. Machinarium é uma aventura point-and-click completa, bonita e instigante. O review podia acabar por aqui e eu podia mandar vocês jogarem ele, mas este é o meu blog e escrever alguns parágrafos e postar uns screenshots (clique neles para ampliar). Vai ser mais divertido.

Jogos de exploração point-and-click não são meus favoritos, mas eu gosto bastante e já joguei vários quando era menor. Naquele tempo em que comprava-se revistas com “200 jogos para PC” lembra? Vários deles eram deste gênero e sei que diverti horrores com eles. O engraçado sobre esse estilo de jogo é que, como a jogabilidade é bem limitada e não varia de um jogo para o outro, é preciso cativar o jogador com os recursos que se tem: visual, som, puzzles e desenvolvimento da história. Machinarium consegue alcançar níveis bem altos nesses aspectos.

O visual do jogo é algo à parte. Os personagens são muito bem desenhados e tem um ar de desenho animado, cheios de expressões corporais e com balões de texto e pensamento. Isto aumenta muito o carisma deles e vale para todos os personagens do jogo, que são exclusivamente robôs, o que é bastante irônico visto que a idéia que se faz de robôs é a de seres frios e sem sentimentos.

O tom do jogo é dado pelos cenários que constrastam com os personagens, parecem tristes e desolados numa mistura de arquitetura antiga com máquinas e apetrechos estranhos por todo lado.A trilha sonora faz jus aos gráficos e completa perfeitamentamente o que estes começaram. Ela é bastante atmosférica, abusando dos sintetizadores, com a presença de instrumentos de sopro e percussões interessantes, realmente muito boa.

Embora clicar nos diversos elementos do cenário seja uma das coisas que você mais vai fazer, a seleção de puzzles é extremamente variada. Desde charadas lógicas, rearranjar alguns objetos, jogar minigames até um deles que é um jogo dentro de um fliperama. Caso você fique preso numa tela porque não sabe o que fazer você pode acessar uma dica e, se isso não for suficiente, um pequeno guia do que deve ser feito no momento. Este segundo exige que você jogue um minigame (um jogo de navezinha) o que torna a opção demorada e faz você querer buscar as soluções e não ficar pegando tudo de mão beijada.

A premissa da aventura, o motivo pelo qual você está movendo o pequeno robôzinho (que eu não sei se tem nome), é um leve mistério. Durante momentos da narrativa você vai ver pequenos flashbacks da vida dele que explicam um pouco e ao final você vai entender tudo, ou quase tudo. A vontade de ir descobrindo mais também é um fator instigante do jogo.

Então, se curtiu o review tente o demo no site oficial e fique atento para promoções como o Humble Indie Bundle e outras no própria site da Amanita Design, responsável pelo Machinarium, porque de repente você descola ele bem baratinho pra você também :)

Six Degrees of Black Sabbath

Ok gente, prestem atenção nisto!

Poisé, tarde demais. Você já está lendo. Agora simplesmente acesse este site e brinque por horas descobrindo conexões entre os seus artistas preferidos ou nem tão preferidos, ou qualquer um.

Aqui estão uns dos meus caminhos favoritos, a graça é tentar fazer os mais longos ou com as maiores pontuações:

Tem mais informações no blog do autor sobre a implementação desse software. Segundo ele o número de passos médio entre dois artistas selecionados aleatoriamente é 7 e o nome foi escolhido porque o Black Sabbath é uma das bandas mais populares e com mais conexões… mas também provavelmente porque é uma banda foda.

Ainda no mesmo assunto descobri este outro site que faz basicamente a mesma coisa, o Band to Band. Legal para perder um pouco mais de tempo.

Music Hack Day

Comecei a explorar um pouco o blog citado ali em cima e tem muita coisa legal. Inclusive descobri sobre o Music Hack Day, um encontro de um final de semana entre pessoas com um interesse comum em música e tecnologia para construir alguma coisa interessante. Foi de lá que saiu o Six Degrees of Black Sabbath e esta outra aplicação que eu adorei.

Aqui tem uma lista de todas as criações feitas no encontro deste ano.

Ia ser o bixo organizar algo parecido aqui por perto :)

Review: Street Fighter LoA

Eu estou de férias da faculdade então sobra um tempinho mais que generoso para meter a mão em uns games e me divertir. Alguns deles me chamaram bastante atenção e resolvi fazer uns reviews. Porque reviews são legais e eu posso me sentir como um redator de revistas de video-games (lembram quando elas exisitiam?).

Street Fighter Legend of Ansatsuken

Jogue ele aqui: http://www.newgrounds.com/portal/view/562870

Começando com esse, que eu joguei mais recentemente. Adorei o fato de eu ter clicado meio por cima no link desse jogo no Newgrounds e pensado: “Hey! Um vídeo de Street Fighter, eu sempre curto as batalhas que esse carinhas do flash fazem…”. Cara eu estava errado… era um jogo e um RPG!

RPG?!?

O sistema de batalha

Eu sou um fã do estilo, mas fiquei me coçando com essa mistura inesperada. Como fazer um um jogo de luta usar um sistema de turnos e estratégia funcionar? Fui surpreendido mais uma vez já na primeira luta onde são introduzidos os conceitos de ataques, barra de defesa, barra de energia, e etc. O jogo realmente possui batalha dividida em turnos, porém para realizar os ataques, que são na realidade combinaçãoes de golpes (combos) e é preciso confirmar cada golpe com o apertar do botão correspondente. Existe ainda um sistema de defesa que exige bastante dos reflexos e esquemas de posicionamento, golpes especiais e mudança de personagem que influenciam largamente no desfecho das lutas. No fim temos uma mescla harmoniosa de reflexos e estratégia que deixa as lutas bem interessantes. E difíceis!

A progressão do jogo também é um pouco inusitada. Diferente de um RPG normal onde você espera levar um time de personagens para explorar algum cenário e procurar itens e lutar com monstros neste você apenas vai de luta em luta, como o modo arcade do próprio Street Fighter. Entre cada luta temos algumas cutscenes, muito bem animadas em minha opnião, que usam sprites do jogo e texto para contar a história e introduzir o motivo da luta.

Atributos e combos

Storytelling

Por falar em história o jogo usa a mesma história da série Street Fighter Alpha, e você acompanha Ryu e Ken desde os primórdios do seu treinamento até se sagrarem pela primeira vez campeões e serem reconhecidos como grandes lutadores. Além disso eles se deparam com os perigos do estilo de luta que aprenderam e as consequências de usá-lo sem restrição (SPOILER Akuma SPOILER). Muitos pontos extras para o autor por usar muito bem todos os recursos que tinha, sprites, animações, som e texto para contar esta história de uma maneira que, novamente em minha opnião, deixa no chinelo as pobres animações e breves vídeos que geralmente temos explicando a história em jogos da série Street Fighter.

Cutscenes

Pontos negativos

Pra não dizer que só falei de flores, existem alguns pontos que deixam a desejar. Existem alguns momentos em que os gráficos deixam a desejar, destoando do clima do jogo. Além disso músicas eram de baixa qualidade e mal “loopadas” (o ponto de loop fechava mal), mas acredito que estes dois pontos são atribuídos ao autor tentando diminuir o tamanho do jogo.

O sistema de batalha e evolução de personagens, embora muito interessante, se mostrou um pouco desbalanceado. Das diferentes maneiras de evoluir os personagens, uma se mostrou claramente superior, nulificando possibilidades de diferentes builds e estratégias. Esse é o tipo de coisa que o autor de ter notado e vai ficar bem melhor se houveram algumas próximas versões ou continuações do jogo.

Conclusão

É um jogo excelente. Agrada fãs de Street Fighter. Agrada quem curte um bom RPG, com alguns twists na jogabilidade. Agrada quem curte uma história bem contada. Me fez sentir bem por dentro. Pena que é bem curto.

Vou escrever mais alguns reviews de jogos. O próximo será… Machinarium!

Um ode ao ZSNES

Ah, olá! Eu não vi vocês aí (risos). Eu estava apenas aproveitando um pouco do bom e velho Super Nintendo aqui no meu computador… como? Usando o ZSNES é claro.

Eu usei este emulador desde que me conheço por nerd para saciar minha sede Megaman X, Super Mario World, Campionato Brassileiro e de quebra jogar pela primeira vez os clássicos Chrono Trigger, Final Fantsay IV e VI, etc…

Isto é só um amalgamado de algumas informações úteis sobre o emulador, leia os títulos e caia nos parágrafos que te interessam. Este post é dedicado a todos que contribuíram para o desenvolvimento desse software maravilhoso.

Ubuntu x64 e ZSNES

É eu uso Ubuntu Linux no meu computador. 64 bits. Poisé. No mais está tudo funcionando perfeitamente, mas o ZSNES … ah se você olhar lá no site deles… não existe uma release x64 … nem existem pacotes nos repositórios … mas você pode tentar compilar você mesmo. Eu tentei e falhei miseravelmente, parece que tem alguns ASSEMBLYS loucos na jogada, coisa bem satânica.

Por sorte alguem teve sucesso nessa empreitada e disponibilizou um repositório pra nós. Mais instruções aqui. Depois de adicionar esse repositório é só instalar o pacote zsnes32 normalmente e voilá. Tá tudo bem agora.

Caso alguém precise de mais ajuda com esse processo pode pedir ajuda nos comentários.

Aplicando filtros na imagem

Talvez você já tenha visto isso xeretando pelos menus. Em Config -> Video -> Filters você pode escolher alguns filtros para deixar a imagem menos pixelada. Isso é especialmente importante na tela do computador, porém sempre existem os puristas que não gostam e preferem a imagem original. De qualquer forma dê uma testada nas opções e veja se gosta, cuidado também com o processamente que pode ficar muito pesado em máquinas mais velhas.

Gravando vídeos e áudio

Essa eu descobri há pouco tempo! Em Misc -> Video Opt você pode gravar, tocar e exportar vídeos dos seus jogos. É realmente bem fácil, aperte RECORD, continue jogando e depois aperte em STOP. Existem opções para exportar o vídeo já comprimido em formato avi, com dois codecs diferentes, e também somente o áudio em mp3.

Saves, Velocidade, Rewind e essas trapaças

Essas acho que vocês também conhecem. Em Config -> Speed você pode configurar um botão para aumentar a velocidade e também um para diminuir. Outra boa pedida é que se pode configurar o quanto se aumenta de velocidade porque hoje os processadores não tão de brincadeira e aceleram mesmo.

Na aba Config -> Saves é possível configurar os famosos savestates dos jogos. Por padrão temos salvar no F2, carregar no F4 e mudar o slot no F3, porém tudo é passível de mudança. Nas últimas versões também é possível configurar aqui um botão de Rewind que volta no tempo alguns segundos de jogo.

Lembrando que abusar muito dessas features pode acabar prejudicando o gameplay. Por essas e outras eu jogo com um joystick :)

Jogar online

Até as versões mais antigas do ZSNES (1.4 eu acho) existia a opção de se conectar com um segundo jogador pela internet. Quem estiver interessado nisso deve dar uma olhada no http://zbattle.net/.

Peças extras

Tem uma coisa a mais que você precisa para fazer o seu emulador funcionar, mas eu me esqueci o que é. Mesmo assim eu sei que aqui http://www.emuparadise.org você vai encontrar um monte delas, seja lá o que forem.

Não esqueça de apagar tudo depois de 24 horas (trollface.jpg)

Linux e o Guitarrista Pobre

YEAH!!!

… but everyone can rock in Linux!

Aqui vai uma receitinha para os guitarristas que tem alguma distribuição Linux instalada nos seus computadores. Este é um pequeno guia que vai te mostrar como tirar um som maneiro com a guitarra, aplicar efeitos, corrigir imperfeições e gravar o resultado. De quebra você aprende um pouco sobre o ecossistema de aplicações de áudio avançadas do penguim além de ser tudo bem acessível monetariamente.

Você vai precisar de:

  • Uma guitarra (ou violão :)
  • Um cabo para ligar a guitarra na entrada de microfone (se chamam cabos P10-P2, o meu foi menos que 10 reais, mas tem pouca qualidade, já estão avisados )
  • Jack Audio Connection Kit, Jack Control, Rakarrack e Audacity

Supondo que os dois primeiros itens ficam por sua conta, vamos ver como fica o último. Eu uso o Ubuntu e vou me basear em como as coisas funcionam por aqui, mas não deve ser muito diferente nas outras distros. Primeiro instalaremos os programas, você pode ir pelo Ubuntu Software Center e achar o nome deles  OU digitar isto aqui no terminal.

sudo apt-get install jackd qjackctl rakarrack audacity

O Jack é uma aplicação construída em cima do sistema Alsa para rotear entrada e saída de áudio entre diferentes aplicações. Usando ele nós vamos pegar o som que está entrando pelo microfone (chamado capture) e redirecionar para o Rakarrak, um processador de efeitos de som, uma pedaleira digital.

Jack

Interface Jack Control feita para facilitar a manipulação do Jack

Para começar, abra o Rakarrack, provavelmente ele irá te dizer algo sobre o Jack ainda não estar rodando. Precisamos fazer isso primeiro, então vamos apertar o botão Start na interface do Jack Control . Pronto, agora o Rakarrack deve abrir quando você tentar novamente.  O próximo passo é fazer as conexões.  Abra o Jack Control e clique em Connect, você verá algo mais ou menos assim:

connect

Interface de conexões do Jack Control

Como pode ser percebido, à esquerda temos “entradas” de som e à direita saídas. Os quadradinhos chamados system são respectivamente o seu microfone e caixas de som. Outros programas compatíveis com o Jack também aparecerão como quadradinhos ali. O que faremos é ligar a entrada de som no Rakarrack e este na saída de som, use o mouse, clique e arraste para conectar, é para ser bem intuitivo.

connect

Conexões já prontas

Depois de pronto vá até o Rakarrack e ligue os efeitos (botão FX On à direita e em cima). Se tudo correr como deveria você tem agora potencial de fazer todo o barulho que desejar! Dê uma olhada nos efeitos já prontos e customize os seus próprios, diversão garantida!

Sobre a interface do Rakarrack

Interface um pouco melhorada

A interface um pouco melhorada, tente você também ;)

Ela é incrivelmente feia e complexa, acho que eles botaram uma cor meio escrota até para emular o feeling das pedaleiras, heh… Recomendo fortemente que você de uma explorada nas configurações e mude para algo mais agradável, com o tempo você consegue deixar tudo tranquilo e acaba até se afeiçoando.

Gravando

Para gravar os resultados vamos usar um programa muito bom, o Audacity. Quando você abre ele normalmente os comandos de gravação estarão usando a entrada padrão de áudio, mas na realidade o que queremos é colocar o Rakarrack no meio disso. Para fazer esta conexão vá no menu Edit -> Preferences, selecione a aba Devices. Lá selecione o Host como o Jack e o Recording Device como Rakarrack. Pronto, agora o botão de gravação irá pegar diretamente o som da guitarra. Ainda antes de gravar você pode gerar uma pista com um metrônomo ( Generate -> Click Track ) para não se perder.

Melhorando o Áudio

Depois de gravarmos alguns riffs, podemos dar uma melhorada no som com alguns efeitos do Audacity, eles estão (se preparem) na aba Effects. É possível, amplificar o som, passar um filtro compressor, equalizar (embora seja mais aconselhavél equalizar no Rakarrack),remover o rúido e muito mais. Noise Removal é bem versátil e poderoso, além de ser uma mão na roda pra quem tem equipamentos de caráter duvidoso. Apenas selecione um trecho de gravação onde é possível só ouvir ruído e marque como Noise Profile, depois selecione todo o trecho afetado pelo ruído e passe o filtro.

Mixando e salvando

Depois de dar os retoques você pode selecionar algumas faixas e mixá-las com Tracks -> Mix and Render . Finalmente use File -> Export para salvar a faixa em algun formato de áudio.

Importante notar que o suporte a exportação de MP3 não vem por padrão, é preciso instalar o pacote lame, mais informações aqui.

No ubuntu tente:

sudo apt-get install lame libmp3lame0

Toquem até seus dedos sangrarem meus amigos!

É isso, divirtam-se!

Qualquer dúvida, problema com a instalação dos programas, adendo ou sugestão é mais que bem vindo nos comentários.

YEAH!

Criatividade Quântica

Existe alguma coisa de mágico e bizarro que acontece na mente daquele que deseja criar. Colocar juntas as palavras para formar um texto ou combinar os acordes para formar a canção ou sequenciar as notas para formar a melodia… qualquer uma destas atividades é constante na mente inquieta do artista.

Entretanto nem todas as idéias da mente criativa conseguem escapar de sua prisão. O passo intermediário entre a imaginação, a concepção e a prática de cada uma delas (sim um passo intermediário entre três coisas, vai saber…) é a parte mais difícil de todas. Muitas idéias que eu já vi surgirem totalmente formadas e lindas na minha cabeça não sobreviveram a essa etapa. Parece que o ato de tentar transcrevê-las para outra mídia que não o mundo abstrato onde vivem é suficiente para matá-las…

… e é isto, um estranho misto de frustração, poesia e pseudo-ciência que eu chamo de criatividade quântica.

Este post em forma de tirinha. Inclusive deêm uma olhada neste site, muito bom!

Internet, Flash e Newgrounds

Se segurem que este post é longo

Eu já expressei aqui a minha nostalgia bucólica pela minha pré-adolescência junto à internet. O dia inteiro (na realidade noite, porque era net discada) baixando ROMs de SNES/NES/GBC e episódios de SamuraiX encodados em .rm (oh yeah e depois assistir em tela cheia!). A internet colaborativa engatinhava furiosamente naquele tempo e nós mal tinhamos o vislumbre do que seria a revolução dos blogs, do orkut e todas estas coisas que gritam induvidualidade ao mesmo tempo que sufocam os indivíduos num mar de fotos tiradas fazendo biquinho na frente do espelho.

Pois bem, o que fazia eu na frente do CRT 15 polegadas antes da chegada da fatídica web 2.0? Eu tinha um conjunto de sites que os quais visitava incessantemente: Evil Gambit’s Lair, Zelda4Ever (que acredito não existir mais), VideoGameDC, Razoric, uma chulepada de páginas pessoais ao melhor estilo “web” pré-histórica. Isso tudo, é claro, junto com uma boa dose de ICQ (aka messenger da cornetinha cretina) e um pouquinho assim só de irc.

Eis que um dia, por algum motivo eu chego neste vídeo (abra em outra janela e olhe antes de continuar). Ver isso hoje é uma delícia certo? Esses botões com efeitos de sombra, motion twin e personagens desenhados de uma maneira… estranha. Quanto tempo faz que eu não via um vídeo assim? Em época de decadência da plataforma Flash (mentira, esse vai durar mais que IE6) eu fico todo nostálgico de imaginar como eram as coisas antes dela.

Existia em todos os sites de entertenimento uma vontade de servir o usuário com MUITO conteúdo, era uma época em que eu mesmo procurava jogos, vídeos e músicas e os baixava para serem desfrutados offline. O nosso negócio com os sites era um relacionamento rápido e casual, pegávamos o que queríamos e íamos embora. No entanto, como não podia deixar de ser, começou a ser inserida nos internautas a vontade de perderem a maioria do seu tempo junto aos sites. Primeiro eram aquelas páginas lotadas de texto (que por sua vez eram copiados de outros sites) falando sobre finais alternativos (falsos é claro) de jogos, sagas de DragonBall que você nunca tinha ouvido falar (falsas é claro), lendas urbanas, aliens e coisas do tipo.

Com o tempo foram surgindo sites cada vez maiores e agora com um diferencial. Eles estavam produzindo conteúdo original, ou pelo menos traduzindo conteúdo original de sites estrangeiros (o que naqueles tempos era especialmente importante). No entanto faltava alguma coisa… os sites não estavam felizes em apenas produzir textos e linkar imagens e gifs. O que se procurava era uma experiência completa que conseguisse integrar-se de maneira transparente na navegação do conteúdo e, nesse sentido, o Flash chegou primeiro.

Sem mais nem menos a internet se viu invadida por milhares de aplicações Flash, todos os sites o usavam para um menuzinho cafona e/ou banners. Alguns até eram feitos totalmente em flash, algo que não era legal para a banda limitada dos usuários na época (e também não é legal hoje, parem com isso!). Mas na realidade tudo isto era frescura, a revolução chegou mesmo quando os vídeos e jogos começaram a usar e abusar do flash para interagir com o usuário. Eu me lembro do primórdio de sites como Miniclip, VideoGameDC e Razoric lotados de pequenos filmes e jogos.

O que me leva novamente ao assunto mestre desta postagem. Teorizo que o www.newgrounds.com foi onde culminou de maneira mais elegante, e apoiada pela plataforma Flash, essa vontade de criar conteúdo original. A qualidade começou bastante “rústica”, como pode ser visto na animação comentada anteriormente, entretanto a coisa evoluiu de uma maneira inesperadamente linda num dos maiores portais de entertenimento da rede.

O mais importante desta história eu acredito que seja entender que esta evolução não foi só uma nova tecnologia que permitiu vídeos e sons de uma maneira integrada e agradável no seu navegador. Foi a evolução da colaboração e troca de conteúdo original e remixado na internet. Nenhuma dessas coisas legais exisitiria hoje se não houvesse essa demanda e contribuição unidas. No final de contas somos todos mais um carinha sentado em cima de um tanque amarelo.

Conteúdo bônus, alguns vídeos e jogos históricos:

  • All ur base are belong 2 us: Se você não conhece este vídeo nem adianta explicar, mas é iconico pra caralho
  • Mario vs Sonic: O clássico supremo, devo ter visto mais de cem vezes.
  • The Bard Song: Esse é um ótimo exemplo de como as animações e desenhos eram simples (e influenciados por Dragon Ball) e mesmo assim o conteúdo era muito bom
  • The Real Legend 3: Este é o terceiro episódio de uma ótima série. Mais uma paródia de um game, mas uma muito boa.
  • Metal Gear Awesome: OMG METAL GEEAAAAR!
  • There she is!! final step: Nem só de violência e games vive o Newgrounds. Também temos coelhos orientais fofos. Este vídeo já está há um baita tempo bem colocado no ranking global de vídeos e é realmente muito bom.
  • Alien Hominid: Um game muito popular que acabou até sendo lançado para os consoles de verdade!

Design Patterns

Esse final de ano eu andei dando umas viajadas por ai e, aproveitando uma folguinha longe dos computadores, eu me rodeei de alguns livros interessantes e pude aproveitar aquela leitura calma e sem compromisso como deve ser. Achei um deles muito agradável e resolvi blogar um pouquinho.

O livro que eu li foi o Head First: Design Patterns e devo dizer que foi uma surpresa agradável. Eu tinha um pequeno preconceito com os livros dessa série porque eu peguei um sobre Java e tinha achado muito enrolado, no entanto agora eu vejo que talvez eu tivesse preconceito com o Java (ou apenas estivesse muito estressado para sentar e ler com calma). O estilo de escrita é agradável e bem humorado e visa caminhar bem lentamente, introduzindo conceitos aos poucos e sendo bastante repetitivo para fixar as idéias. Além disso ele apresenta alguns exercícios simples com resposta e outros nem tanto que deixam margem para divagação e exploração do que foi aprendido. No final isto contribui bastante para manter o interesse.

Eu recomendo este livro pra quem quiser fazer a leitura introdutória sobre o assunto (Design Patterns) que eu fiz. Provavelmente os outros da série são bons também, mas daí eu já não posso garantir nada.

Patos são um tema recorrente no livro

Patos são um tema recorrente no livro

Mas então… design patterns?

Eu tenho um pequeno orgulho de entender já de maneira satisfatória os princípios de programação orientada a objetos e aplicar eles frequentemente em meus softwares, entretanto eu sabia que havia algo errado… muitas vezes eu acabo com alguma solução complicada demais ou confusa demais ou simplesmente tão feia que eu não consigo nem olhá-la de novo. Por essas e outras inexperiências na hora de fazer programas que tem tanto software sem pai por ai (pun intended).

Digo tudo isto porque é exatamente aí que eu precisava expandir os meus estudos. Eu já desconfiava, mas agora comprovei que depois que você entende como declarar classes, objetos e métodos você ainda não está programando OO. No máximo você está programando Java, Ruby, C++, … ; sofrendo com seus getters e setters e dividindo a lógica do seu programa em pedaços escolhidos arbitrariamente pela sua cabeça de programador mundano.

O interessante do livro foi a maneira como ele apresentou alguns princípios, que estão no cerne do que é a orientação a objetos (a de verdade) e que se seguidos levam a designs mais organizadas e manuteníveis. Alguns dos meus favoritos são:

  • Encapsule o que varia (em oposição a encapsular tudo como eu fazia antes)
  • Programe baseado em interfaces e não em implementações concretas
  • Uma classe só deveria ter um motivo para mudar
A Programadora cética é um dos personagens mais divertidos do livro. Cada programador mundano tem um pouco dela dentro de si

A Programadora cética é um dos personagens mais divertidos do livro. Cada programador mundano tem um pouco dela dentro de si

Tudo bem! No parágrafo anterior eu falei de princípios, entretanto isto está muito longe das linhas de código que nós escrevemos. Para aproximar um pouco estes dois mundos, alguns teóricos maneirinhos observaram problemas comuns que surgem quando escrevemos software, aplicaram estes conceitos e conseguiram soluções interessantes. Estas soluções foram chamadas de Design Patterns e parece que até rolou um livro aí, best seller, coisa fina.

Hmmm ….

Eu sei que é decepcionante e tudo mais, mas este texto não é uma boa introdução sobre o assunto. Considerem ele como um pequeno aperitivo do que vocês podem conseguir lendo mais sobre o assunto.

Considerações finais

  • Gostei bastante do livro e recomendo
  • O uso de Java e UML feito no livro é muito bem acertado. O código é simples e usa os melhores aspectos dos dois para explicar tudo. Fui despido de parte do meu preconceito destas tecnologias (agora só tenho preconceito contra programadores java (hahah))
  • Todos os capítulos são legais, porém o destaque vai logo para o primeiro. O padrão Strategy realmente explodiu minha mente e me fez enxergar como eu entendia OO errado.

E é isso, espero que tenham curtido o post. Quem me conhece pessoalmente e quiser tomar um café e discutir sobre o assunto, tá valendo!

css.php