Posts de ‘Emerson Macedo’

[Emerson Macedo] Node.JS Versão 0.4.0 – O que mudou ?

Monday, February 14th, 2011

No último dia 10/02/2011, foi lançada a versão 0.4.0 do Node.JS (confira o anúncio na lista oficial). Esta é a primeira versão stable depois dos releases 0.2.x. Sempre foi claro que os releases 0.3.x eram totalmente unstable e que estavam servindo de base para os releases 0.4.x. Portanto, todos deveriam conseguir atualizar suas aplicações para essa versão sem muitos problemas.

Dentre as principais mudanças, destaco as melhorias no suporte a SSL, que é uma das coisas que precisava melhorar no Node.JS.

Outro ponto importante foi a mudança no sistema de módulos. Agora o require usa paths completos, ou seja, agora consegue funcionar com links simbólicos. Além disso, o require também entende o package.json, que é o arquivo que define um pacote node. E por último, mas talvez o mais importante é que agora você pode ter um diretório node_modules no seu projeto e o require vai procurar pelos módulos primeiro nele, antes de ir buscar em outros locais, facilitando muito “vendorizar” suas bibliotecas dependentes.

O Node também atualizou a versão do V8 para 3.1.2 e agora temos uma API um pouco menos burocrática de HTTP Client.

Existe também um novo módulo chamado OS, que trás algumas operações para pegar informações sobre o gerênciamento do sistema, como número de CPUs, quantidade de memória total/livre e informações gerais do sistema operacional.

Confira a documentação da API 0.4.0.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Usando o novo built-in debugger do Node.js

Saturday, February 12th, 2011

Para debugar aplicações Node.js, eu estava usando até o momento o Node Debugger (a.k.a ndb), uma biblioteca que deve ser instalada a parte (geralmente via npm) e que apesar de não ser nada de outro mundo, tem me ajudando bastante. Existem também outras boas opcões, como o Node Inspector, Node Eclipse Debugger, entre outros. Todas elas como pacotes em separado.

Desde a versão 0.3.4 do Node.js, existe um built-in debugger, que provavelmente se tornará a opção default, e provavelmente o plugins de IDEs como o do Eclipse passará a usa-lo para debugar aplicacões Node.js (suposição minha).

Sua forma de utilização básica é praticamente a mesma que já estamos acostumados com ferramentas de debug command-line. Basta inserir uma linha no meio do código com a keyword debugger e o programa vai parar naquela linha para você verificar o que está acontecendo. Um breve exemplo:

function fazNada(msg) {
  debugger;
  console.log(msg);
}
fazNada("teste");

Agora basta rodar o node com a opção debug:

$ node debug qualquercoisa.js

Digite run (acho que esse passo não precisaria existir, mas):

debug> run

O segunte output deveria aparecer:

// informações sobre o programa e o primeiro break point
debugger;
^

Dê um list para vermos onde estamos no programa:

debug> list
 1 function fazNada(msg) {
=>   debugger;
 3   console.log(msg);
 4 }
 5 fazNada("teste");
 6

Imprima o valor de msg:

debug> print msg
teste

Passe para próxima linha:

debug> next
break in fazNada(msg=teste), /Users/emerson.leite/lixo/xptoDebug.js:3
  console.log(msg);
  ^

Continue o script para ele executar o restante e encerrar:

debug> continue
debug> teste

program terminated

Se você quiser repetir o ciclo basta executar run novamente.

Para ver os demais comandos, basta digitar help no console do debug:

debug> help
Commands: backtrace, continue, help, info breakpoints, kill,
list, next, print, quit, run, scripts, step, version

Por enquanto pretendo vou continuar usando em conjunto com o ndb, principalmente porque esse debug built-in ainda não tem um eval, ou seja, não consigo alterar nada durante o debug, o que me limita muito na hora de resolver problemas.

Fiquemos atentos as novidades.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Vídeo e Slides Campus Party Brasil 2011

Tuesday, January 25th, 2011

Na última semana estive na Campus Party Brasil 2011 falando sobre Node.JS. A apresentação foi uma introdução ao tema, até porque o público do evento era bem variado. Deixo aqui os slides e vídeos da palestra pra quem quiser ver como foi.

Node.JS – Campus Party Brasil 2011

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Node.JS na Campus Party Brasil 2011

Monday, January 17th, 2011

Amanhã (18/01/2011), estarei na Campus Party Brasil 2011 falando sobre Node.JS. A pedido da organização da track de desenvolvimento, essa palestra será uma introdução sobre o tema, portanto o foco é para quem não conhece quase nada de Node. Se você já assistiu alguma das minhas palestras sobre Node.JS em São Paulo ou no Rio, provavelmente não verá nada de novo, portanto não vale muito a pena assistir novamente, a não ser que queira trocar figurinhas sobre a tecnologia ao final da palestra :p

Para os que não conhecem ainda, garanto que é uma boa introdução a tecnologia, e vai te dar uma visão geral do que o Node.JS tem a oferecer .

Eu não compareci a nenhuma das edições anteriores da Campus Party Brasil. Todo mundo diz que é muito legal, mas nada como estar lá para ter uma opinião própria sobre o evento. Essa ida também será uma oportunidade de conhecer os “Campuseiros” e o ambiente desse concorrido evento (as vagas esgotaram bem rápido).

Estou ansioso, pois provavelmente vai ser bem legal o dia amanhã.

Nos vemos lá.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Últimas de 2010 sobre Node.JS

Friday, December 31st, 2010

O ano de 2010 vai terminando. Esse foi um ano onde o Node.JS começou a ganhar um forte hype. Muitos frameworks surgindo, muita gente blogando sobre o assunto. Palestras, eventos e outras coisas mais. Depois de um tempo sem blogar sobre Node (eu sou empregado em tempo integral e no dia a dia trabalho com outras tecnologias), vou tentar fazer um resumo do que eu tenho acompanhado nesses últimos meses.

JSConf.eu

O tradicional evento Europeu de Javascript contou com diversas apresentações sobre Node.JS. Muitos devs criando coisas legais e apresentando nesse evento. Foi bem diferente do JSConf.us desse mesmo ano, que sobre Node.JS só teve mesmo a palestra do Ryan Dahl, o autor da ferramenta.

Node.js Camp

Agora em Dezembro aconteceu o que podemos chamar de o primeiro evento somente sobre Node.JS, promovido e patrocidado pela Joyent, que é a empresa que mais tem investido na tecnologia, inclusive tendo contratando recentemente o Ryan Dahl.

Nesse evento tivemos diversas palestras dos desenvolvedores das principais ferramentas associadas ao Node, como Socket.io, NPM, entre outros. Eu queria muito ter ido a esse evento, mas infelizmente isso não era uma opção, pois tinha compromissos no meu trabalho.

Ecossistema

No segundo semestre deste ano, aconteceu uma explosão de bibliotecas para Node.JS. Hoje em dia existe biblioteca para fazer praticamente qualquer coisa que fazemos com outras tecnologias web, desde action frameworks, acesso a bancos relacionais e NoSQL até frameworks de testes automatizados e test doubles. Vale a pena uma conferida nas principais bibliotecas, acessando a página de módulos do projeto.

No github, Javascript empatou com Ruby como linguagem mais utilizada, graças a explosão de repositórios node-* ou *.js, bastando uma busca rápida para perceber o quanto esses repositórios tem alavancado Javascript.

O site howtonode.org vem ganhando bastante destaque pelo seu ótimo conteúdo de diversos autores, se tornando referência internacional no assunto.

Hosting

A Joyent abriu bem mais slots para sua hospedagem beta, oferecida no site no.de (vale um post em separado só sobre eles). Basicamente você precisa de um token, o qual você solicita e depois recebe o alerta por email de que o token já está disponível. Tenho usado essa hospedagem gratuita pra fazer alguns testes e tenho gostado bastante. É possível atualizar a versão do Node, fazer restart do serviço, olhar os logs tranquilamente e instalar pacotes livremente. Só não sei se colocaria alguma coisas séria nele nesse momento, pois ainda está muito no começo. Por enquanto deixo para testes e brincadeiras.

Mais recentemente, a NodeJitsu começou a oferecer também como beta uma hospedagem, mas essa até agora não consegui o invite :( , apensar de volta e meia eu colocar meu email lá, na expectativa de conseguir. É mais recente que o no.de, mas parece que vai ser tão interessante quanto, pois também tem um fluxo baseado no git.

O Heroku fechou temporáriamente o suporte a Node para novos usuários. Basicamente eles estão fazendo algumas mudanças e devem abrir novamente agora no início de 2011. Baseado no excelente trabalho que eles tem feito com Ruby, tenho certeza que vão mandar muito bem com Node, mas até que isso aconteça, o Heroku não é uma opção.

Destaques

Dentre vários acontecimentos e lançamentos, alguns merecem um destaque maior. Vamos a eles:

A IDE Cloud9 é um projeto muito interessante da ajax.org para provar o conceito de IDEs no browser. Antes de testar o projeto achei que ia ser mais uma toscaria que já ví muita gente tentando por ai. Pra minha surpresa foi exatamente o contrário. A responsividade quando você está editando o código é muito boa, e apesar de algumas poucas vezes bugar, está extremamente aceitável para um projeto que ainda está começando. Esse projeto foi lançado na JSConf.eu, a qual mencionei no início do post e tem um vídeo disponível da apresentação.

Outro destaque interessante, mas um pouco mais simples é o JsApp.US, um serviço onde você pode criar uma aplicação inteira usando apenas a página deles, de forma online. Dá pra testar o arquivo isoladamente na hora ou fazer deploy direto num subdomínio. Achei um pouco estranho desenvolver assim, mas é muito interessante, pois além do editor de código online, existe uma espécie de shell no final que te permite executar comandos do tipo salve, deploy, open, entre outros. Tem um autocomplete inclusive. Em fim, apesar de ser um paradigma diferente eu acabei gostando bastante. A diferença dele para o Cloud9 é que a IDE Cloud9 por enquanto você instala na sua máquina e esse já um SaaS (Software as a Service), com editor e hospedagem juntos. O melhor de tudo é que o serviço é gratuito.

Rocket Pack Game Engine é uma engine experimental para jogos multiplayer. Falei um pouco sobre essa engine no DevInRio 2010 e na RubyConf Brasil 2010. Muitos desenvolvedores e empresas estão enxergando Node.JS como uma ótima plataforma para construir servidores para esse fim.

Um destaque não menos importante foi o Soda, da LearnBoost, uma das primeiras a postar conteúdo sobre Node.JS. Basicamente é um adapter para usar o Selenium. Em parceria com a SauceLabs, existe um serviço para testes usando uma estrutura cloud.

Outro grande destaque desse fim de ano foram os 2 projetos relacionados ao Canvas 2D, um da LearnBoost e outro da ajax.org. Acabam sendo concorrentes uma da outra, mas espero que aconteça um merge em breve. Vale a pena conferir o da ajax.org e o da LearnBoost.

Uma das aplicações mais fantásticas que vi feitas em Node.JS até hoje foi o Transloadit, um SaaS para upload de fotos e vídeos, que oferece Crop/Resize, Video Encoding, Thumbnail extraction e integração com o S3. Esse serviço merece um post separado, mas basicamente você consegue definir um fluxo básico montando um JSON para definir os passos para o processamento do arquivo recebido pela ferramenta de upload. Eles chamam esse processo de Assembly (isso lembra alguma coisa?). Uma degustada na documentação dessa parte é bem interessante.

Pra fechar

Pra fechar bem o ano temos a entrevista de Ryan Dahl no InfoQ e o release 0.2.6 lançado hoje, 31/12/2010.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Os desafios do Novo Player de Vídeos da Globo.com

Tuesday, December 7th, 2010

Faz aproximadamente 4 meses que mudei para a equipe de Webmedia da globo.com. Nessa ida, eu esperava alguns desafios um pouco diferentes, o que acabou acontecendo logo no começo.

Novo Player Globo.com

Indo direto ao ponto, meu primeiro projeto importante foi desenvolver junto com meu time um novo player de vídeos para a globo.com, o qual chamamos de Player 2.0. Pra mim isso era algo totalmente novo, pois meu contato com desenvolvimento Flash/ActionScript havia sido muito pouco, num projeto no início de 2009. Como a maioria já sabe, o desenvolvimento de um Player de Vídeos hoje em dia precisa necessariamente ser feito em flash, pois é o runtime que tem o maior alcance de usuários. A parte de vídeos do html5 ainda tem diversas lacunas a serem preenchidas e é necessário ainda um bom tempo para que a “massa” de usuários tenham seus browsers atualizados com suporte a essa tecnologia.

Nesse desenvolvimento do Player, pude perceber juntamente com meu time que desenvolver na plataforma do Flash já é o um grande desafio, pois a plataforma e o runtime tem alguns detalhes que você precisa entender e saber lidar, caso contrário você vai ter muita dor de cabeça.

Runtime e Sistema Operacional

Quando você desenvolve alguma coisa em Flash, especialmente um Player de Vídeos, um ponto onde é preciso tomar bastante cuidade é com o Runtime do Flash (vulgo Flash Player). O Runtime pode ter comportamentos diferentes em diferentes versões do próprio runtime e também do sistema operacional. Por algumas vezes nós passamos por situações onde percebemos que o Player não estava funcionando em uma versão específica do Runtime no Internet Explorer 6 no Windows XP. Isso causou uma certa correria, mas felizmente conseguimos resolver o problema antes de colocar no ar e não houve impacto.

Lições aprendidas e tivemos tomar algumas medidas, entre elas testar em Linux, Windows e Mac e nos principais browsers e Runtimes do Flash como parte do nosso Definition of Done (DoD). Na prática, hoje uma estória não é dada como pronta se não tivermos certeza que o que foi feito funciona nos diversos environments pré estabelecidos. No início isso era parte do DoD do Sprint, mas após passarmos por uma situação, onde achamos um problema no IE6 (pra variar) bem no último dia do sprint, e que iria colocar todo esse Sprint por água abaixo, movemos esse item do DoD do Sprint para o DoD das estórias. Acabamos resolvendo o problema sem impactar no sprint, mas o desfecho poderia ter sido outro.

Testes Automatizados

Nos tempos atuais, é quase unânime a importância de testes automatizados no desenvolvimento de software. Todo programador deveria saber os princípios de testes automatizados e aplicá-los no seu dia a dia. Infelizmente, existem alguns environments que não facilitam muito esse tipo de prática. Nesses casos, é necessário lidar com o problema de maneira pragmática, caso contrário as coisas não andam. Diferentemente de outras tecnologias, neste caso não podemos escolher alguma opção diferente, pois a opção é uma só (o Flash).

No desenvolvimento do Player, nós usamos o FlexUnit como ferramenta principal de testes automatizados. Dentro do que ele se propõe, faz seu trabalho bem feito, e facilita bastante os testes. Tem suporte a testes assíncronos, e sua documentação explica bem as principais funcionalidades.

Uma coisa que tem nos atrapalhado bastante são os frameworks de test doubles. Nenhum dos frameworks que testamos funcionou no nosso ambiente. Aqui, algo que percebemos no densenvolvimento para Flash foi que cada tutorial na internet pode funcionar numa minor/revision version do runtime e na outra aquele tutorial já não funciona. É bem complicado e custei a aceitar, mas é assim que funciona nesse environment. Ainda não descarto a possibilidade de que poderiamos insistir mais pra conseguir alguma coisa melhor, ou que não soubemos fazer direito, mas não poderiamos ficar empacados nisso, sem mover nosso projeto pra frente.

Mesmo com essas dificuldades, estamos conseguindo fazer uma quantidade boa de testes e isso tem nos ajudado muito.

Continous Integration Server

Outro desafio bem complicado que tivemos foi ter um build server funcionando bem e rodando nossos testes automatizados. Mais uma vez os tutoriais da internet acabam não funcioando direito. Pra piorar, pra você rodar testes ActionScript 3, que é a linguagem do Flash, é necessário levantar uma instância do FlashPlayer, que precisa de um Servidor X. Essa instância vezes não fecha, fica travada, ou apresenta alguns problemas que nada tem a ver com os testes da aplicação. Custamos a perceber isso, mas foi o que aconteceu.

No fim das contas, hoje temos nosso servidor de build e integração contínua funcionando bem, e com poucos problemas.

Estratégia de Migração

Fazer uma mudança no Player de Vídeos da globo.com não é uma tarefa simples. Não poderíamos simplesmente colocar um Player novo no lugar do antigo e ver o que aconteceria. Além de ser um baita risco seria uma baita irresponsabilidade. Precisavamos então pensar numa estratégia …

Antes  do momento de colocar o primeiro release no ar, decidimos usar um catálogo de vídeos com acesso bem pequeno. Para isso, criamos uma opção que ativa/desativa a versão nova em cada catálogo, individualmente. Dessa forma, poderiamos voltar para a versão antiga IMEDIATAMENTE, em caso de algum problema.

Essa estratégia foi perfeita, pois conseguimos pegar diversos pontos de melhoria, e fazer os ajustes necesários sem gerar impacto para os usuários. Com os ajustes feitos e uma nova versão no ar, resolvemos então colocar em mais um catálogo de vídeos, dessa vez um com mais acessos. Nesse momento nosso player ainda não suportava vídeos ao vivo, portanto ainda não podiamos colocar em catálogos como o do Globo News, pois caso contrário teriamos problemas. Isso provou como a nossa escolha de criar uma opcão de ir habilitando sob demanda se mostrou bastante acertada, pois assim que terminamos a funcionalidade de vídeos ao vivo, habilitamos essa nova versão do Player para o Globo News.

Hoje, estamos já com quase todos os catálogos de vídeos usando esse Novo Player. Em breve, todos os vídeos da Globo.com serão servidos por ele. Isso só não aconteceu ainda porque temos algumas estórias com alguns detalhes que tornam viável a substituição completa do Player que está no ar hoje. O mais interessante de tudo é que estamos tendo impacto e stress zero, graças e estratégia bem traçada por todo nosso time.

Conclusão

Esse começo na equipe de Webmedia está sendo ótimo. Criar um Player de Vídeos do zero tem sido uma experiência fantástica, apesar de todas as dificuldades.

Algumas das coisas mais importantes que estou tirando de lição desse projeto é que (1) nem sempre dá pra fazer tudo certinho com todos os testes automatizados, etc, etc etc, (2) as vezes estamos num vendor lock-in onde não dá pra sair e ai você tem que saber superar com os problemas do enviroment dessa tecnologia e (3) migrar uma aplicação que afeta quase todos os sites de uma empresa do tamanho da globo.com sem causar impacto em ninguém é difícil, mas não impossível.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] [Caos no Rio - OFF TOPIC] Refletindo sobre valores da vida

Friday, November 26th, 2010

Hoje o Rio de Janeiro viveu um dos capítulos mais feios de sua linda história. Considerada a Cidade Maravilhosa, hoje vimos uma cidade sitiada, com o medo imperando e muita apreensão nas ruas. O motivo de eu escrever esse post sobre o assunto não é diretamente o que aconteceu, mas sim as causas do ocorrido.

A minha história

Pra quem não sabe, eu nasci no suburbio aqui do Rio de Janeiro, mais precisamente no Hospital Albert Swaizer em Realengo e morava num barraco dentro de um beco numa espécie de favela em Padre miguel (atrás da menina de mochila rosa) — As imagens de hoje são muito melhores de quando eu era criança — Lá era uma situação muito difícil, pois a maioria das pessoas era envolvida com alguma coisa errada. Meus Pais se separaram e fui morar na casa dos meus avós com minha tia, que era jovem e trabalhava num emprego modesto. Meu avô trabalhava na companhia de lixo (CONLURB) e minha avó era dona de casa. Essa tia — mãe do coração que me criou — tratou de me tirar daquele ambiente e não mediu esforços para que eu não fosse influenciado por aquele meio. Sempre me deu boa educação (inclusive em casa) e me afastando das amizades erradas. Vários dos meus coleguinhas, que brincavam comigo de bola de gude, pipa, futebol, e outras coisas mais, já morreram ou estão presos. Alguns outros felizmente conseguiram se safar.

Contei essa história apenas pra mostrar que não estou querendo dar uma de entendido, mas eu sei muito bem como funcionam as coias em ambientes desse tipo.

Atacando o problema na Raiz

Após tudo que aconteceu hoje, li muitas mensagens no twitter de manifestação de ódio para com os bandidos, a maioria desejando uma chacina. Veja bem, eu não defendo em hipótese alguma que haja impunidade. Pelo contrário, independente de qualquer coisa, cada cidadão é responsável pelos seus atos e deve responder pelo que faz. O que me incomoda na verdade é que no meu modo de ver as coisas, nossa indignação está sendo direcionada de forma equivocada.

As crianças e a marginalidade

É sabido por todos que cada vez mais os traficantes estão iniciando crianças de 10, 12 anos e por algumas vezes até mais novas para começarem no tráfico. Muitas desssas sequer tiveram a oportunidade de estudar. Muitos bandidos começam oferecendo a essas crianças sexo com mulheres mais velhas, depois drogas e ai a criança já está completamente dominada. Crianças nessa idade ainda não tem a personalidade formada, portanto acho injusto atribuir culpa a uma criança dessas, pois a maioria não tem condições de resistir a esses assédios.

Eu me lembro quando em 2005 eu participada de um trabalho da minha Igreja na favela da coreia, tinha uma criança que aparentava ter uns 8 ou 9 anos de idade, mas já tinha um fuzil pendurado no corpo e ficava sentado numa cadeira de ferro, protegendo o acesso a rua que ficava a casa, onde acontecia a reunião da Igreja. Aquilo sempre me doeu o coração. Era uma situação muito triste. Me lembro que por algumas vezes fui em alguns lugares ali por dentro com meu amigo, que morava e foi criado ali. Geralmente  eu via muitas crianças largadas, sem qualquer assistência, presas fáceis para se tornarem futuros bandidos.

O papel do Estado Brasileiro

Nossos governantes tem falhado miseravelmente há decadas, no que diz respeito a saúde, educação, qualidade de vida, programas sociais, entre outros. O máximo que se vê são os bolsa-isso, bolsa-aquilo, bolsa-etc. Apenas tapando o sol com a peneira.

A cada ano que passa, o ensino público piora mais. Na minha época de infância e adolescência, o nível da escola pública era igual e em alguns casos até melhor que as escolas particulares. Tenho grandes amigos que são testemunha disso. Na geração seguinte a coisa já começou a ficar complicada. Hoje em dia nem se fala.

Sobre a saúde em nem vou perder meu tempo …

Pra piorar, o poder público usa uma estratégia bem conhecida e que sempre deu resultado. Eles criam o problema (falta de condições básicas para todo cidadão), agem em cima do problema (matando) e ainda ganham os aplausos da sociedade (que adora ver bandido morrer), sendo que eles são os principais culpados.

Além disso, não existe no sistema penitênciário brasileiro uma forma de recuperar os bandidos que são presos. É lógico que nem todos querem isso, provavelmente uma minoria, mas certamente é papel do estado oferecer essa oportunidade, até porque não a ofereceu para a maioria dessas pessoas quando ainda eram crianças.

Oportunidade de redenção

É impressionante como nós somos implacáveis com as outras pessoas, mas quando é conosco somos tremendamente generosos. Quando uma pessoa erra, caimos condenando, mas quando erramos sempre temos nossas justificativas e achamos que merecemos outra chance.

Certa vez, assistindo um programa de televisão que debatia o Caso Eloá Cristina, se não me engano o Jornalista Roberto Cabrini, criticando veemente e agredindo com palavras, disse que perguntou ao maniaco do parque: “E se a moça fosse a sua filha?”. Ele recebeu outra pergunta de volta: “E se eu fosse seu filho?”. Cabrini disse que ficou totalmente embaraçado e que isso o fez refletir sobre o quanto agente gosta de pagar o mau com o mau.

Toda pessoa tem direito a uma nova chance. Bandidos deveriam ser presos e deveria existir uma forma de recuperar os que estivessem dispostos a isso (Sinceramente eu não acredio que a pessoa nasça bandido, ou com a índole ruim, etc). Alguns infelizmente não vão querer reabilitação e esses deveriam permancer presos, o que também não acontece, pois após cumprir a pena são soltos, independente de estarem em condições de integrar a sociedade.

Conclusão

Por diversas razões, eu não me surpreendo mais com o desejo de ver sangue que existe em nossa sociedade. Essa falta de amor está prevista na bíblia, meu livro de fé e prática. Sinceramente acho que a tendência infelizmente é piorar, pois o mundo está ficando cada vez mais egoista.

De fato, aqueles que cometem delitos precisam pagar por isso, afinal de contas tudo tem uma consequência. Meu ponto maior é que essas pessoas também são seres humanos e precisam ser tratados como tal. Desejar a morte delas é nos tornar tão ruim ou até pior que essas pessoas.

Hoje em dia vejo muita gente que nunca passou fome na vida ou nasceu em uma família com uma condição boa que olha essas pessoas como se fossem lixo. Não tem a menor noção do que é nascer nessas condições. Por outro lado, vejo pessoas que se gloriam em terem vencido essa situação e crucificam os que não conseguiram. Eu prefiro agradeçer muito a Deus e a minha Tia-Mãe por ter me tirado da convivência e das influências, pois eu poderia ter tido o mesmo destino de alguns coleguinhas de infância, não fossem essas oportunidades.

Indo direto ao ponto, o problema maior está no poder público que não oferece condições básicas iguais para todos os brasileiros. Se fosse assim, ai poderiamos questionar que as escolhas dessas pessoas foram mau feitas. De outra forma, é muita injustiça da nossa parte, principalmente porque a maioria delas foi assediada quando criança.

Pra finalizar, vou falar um pouco do que eu acredito. O mundo tem se esquecido de Deus. Cada vez mais as pessoas só pensam em si próprias, e o exercício do amor ao próximo praticamente não existe.

Então não se esqueça. Somos nós que cuidamos desse mundo. Se ele está assim, cabe a nós muda-lo.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Volta das férias, RubyConf Brasil e um pouco de NodeJS

Tuesday, November 23rd, 2010

No final do mês de outubro e no início do mês de novembro tirei um tempo de férias (todo mundo precisa, rs). Nesse tempo eu evitei ao máximo me envolver com trabalho, mas algumas atividades foram inevitáveis até porque já estavam programadas.

Nos dias 26 e 27 de outubro, participei do RubyConf Brasil e apresentei a palestra “Beyond Ruby With NodeJS”, onde basicamente eu falo sobre a repetição do erro em tentar tornar uma tecnologia boa em uma panaceia. Eu sou um rubista convicto e curto muito a tecnologia, mas como já falei tempos atrás aqui mesno nesse blog, não creio ser Ruby/Rails a bala de prata que tanto procuramos (e certamente não acharemos). Os slides seguem abaixo e em breve o vídeo estará disponível no site do evento.

Beyond Ruby with NodeJS – RubyConf Brasil 2010

Passado alguns dias, lancei o segundo episódio do NodeCasts, um site de screencasts em HD sobre NodeJS. O ritmo ainda está um pouco lento, pois a idéia inicial era fazer um screencast a cada 15 dias, mas acabei percebendo que fazer screencasts bem produzidos e com qualidade, sem pausas estranhas e outros detalhes mais que geram um resultado legal da um bocado de trabalho e não é uma tarefa tão simples. Estou aprimorando o processo de produção pra eu poder lançar um a cada 15 dias sem problemas. Se quiser curtir o episódio 2 ou episódio 1 basta clicar no texto linkado. Os screencasts são todos em inglês e colaboradores para tradução são sempre bem vindos e receberão os devidos créditos.

PS: A partir de hoje o blog retorna das férias :)

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Dev in Rio, NodeCasts e umas coisinhas a mais

Tuesday, October 12th, 2010

No último sábado, tivemos a segunda edição do DevInRio, um dos (senão o mais) interessante evento de tecnologia do Rio de Janeiro. O evento foi excepcional, tanto que não ouvi ninguém reclamando pelos corredores, tão somente elogiando. Gostaria de dar os parabéns ao meu amigo André Fonseca, ao Silvestre Mergulhão, Ramon Bispo e os demais organizadores que não lembro os nomes agora :)
Também aproveito para disponibilizar aqui os slides da palestra sobre NodeJS que apresentei nesse evento.

DevInRio 2010 – NodeJS

No último slide dessa palestra, fiz o lançamento do site NodeCasts, cujo objetivo é publicar screencasts gratuitos em alta definição (720p) sobre NodeJS. Os screencasts serão sempre gravados em inglês e estou procurando colaboradores (que receberão o devido crédito) para fazer legendas em português no formato do Youtube, para que eu possa ir adicionando e ajudar os amigos brasileiros que ainda tem problemas com o inglês.
NodeJS Screencasts - By Emerson Macedo

Tenho por objetivo lançar um novo screencast a cada 15 dias. Em alguns casos pode ser que seja lançado semanalmente, mas isso será exceção, dado o trabalho que dá pra gravar screencasts e afinal de contas tenho outras coisas mais pra fazer :)

Post Footer automatically generated by Add Post Footer Plugin for wordpress.

[Emerson Macedo] Hospedagem gratuita NodeJS com Joyent Node Smartmachines

Thursday, September 30th, 2010

Já faz algum tempo que a Joyent está investindo em  NodeJS e pelo visto com força total. Passado 1 mês do Node Knockout,  a Joyent está disponibilizando hospedagem beta para o NodeJS. Essa liberação está acontecendo gradualmente e atualmente é necessário um token. Basicamente você solicita esse token e entra numa fila. Não demora muito e eles enviam um email pra você avisando que o token já está disponível. A partir daí basta recupera-lo e usar para criar sua instância.

Uma coisa legal também é que a Joyent criou uma API REST, onde é possível fazer tudo pela linha de comando. Vamos criar e fazer deploy de uma aplicação simples.

Criando a conta:

$ curl -k https://api.no.de/account \
    -F "email=user@domain.com" \
    -F "username=user" \
    -F "password=pass" \
    -F "password_confirmation=pass"

Adicionando uma chave ssh:

 $ curl -k -u user:pass https://api.no.de/sshkeys \
    -F "name=seunome" -F "key=@/Users/seuusuario/.ssh/id_rsa.pub"

Solicitando um coupon para provisionar uma máquina:

$ curl -k -u user:pass https://api.no.de/heart -X POST

A partir daí, você deve esperar o seu email chegar, avisando que o coupon está liberado. Como eu disse, essa liberação é gradual. Portanto, muita calma nessa hora. Talvez você tenha que voltar no artigo depois, portanto guarde o link :)

Provisionando sua máquina (quando o coupon estiver liberado):

Pegue o coupon:

$ curl -k -u user:pass https://api.no.de/coupons

Se você fizer essa busca antes do coupon estar liberado virá uma resposta vazia.

Provisione com o coupon recebido:

 $ curl -k -u user:pass https://api.no.de/smartmachines/node \
    -F "coupon=123456789abcdefghijk" \
    -F "subdomain="seusubdominio"

Nesse momento você já tem uma máquina apontando para o endereço: htttp://seusubdominio.no.de

Primeiro deploy

O deploy para uma Node Smartmachine é feito via git, assim como no heroku. Sendo assim, vamos criar um projeto simples, com um hello world e fazer o deploy:

$ mkdir seuprojeto && cd seuprojeto

Crie um arquivo chamado server.js no editor de sua preferência e adicione o seguinte código:

var http = require('http');

var server = http.createServer(function (request, response) {
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.end('Hello NodeJS Smartmachine\n');
});

server.listen(Number(process.env.PORT));

Pegue as informações (IP) da sua máquina para configurar o repositório remoto do git:

$ curl -k -u user:pass https://api.no.de/smartmachines/node

Inicialize o repositório git, faça o primeiro commit e adicione o repositório remoto:

git init
git add .
git commit -am "Primeiro commit"
git remote add joyent ssh://node@seuip/repo

Agora vamos ao que mais interessa. Deploy !!!!

git push joyent master

Pronto!!! Agora acesse htttp://seusubdominio.no.de e você deve ver a mensagem Hello NodeJS Smartmachine.

Gerênciando pela interface web

Para gerenciar sua conta visualmente basta entrar em http://no.de e entrar com seu usuário e senha. É uma ótima opção também. Nesse site também é possível criar novas contas, adicionar chaves ssh e provisionar máquinas. Não é possível

Conclusão

Essa hospedagem de NodeJS me parece bem promissora, e eu sinceramente estou gostando muito. A hospedagem permite instalar pacotes usando NPM e também instalar algumas outras coisas. No próximo artigo vou explorar detalhes de administração dessa hospedagem.

Post Footer automatically generated by Add Post Footer Plugin for wordpress.