Posts arquivos para setembro, 2011

30set2011

[IT Web - Ruby Fundamental] Módulos como namespaces

(0) comentários

Módulos em Ruby são grupos de métodos, constantes e variáveis de classes.

Os módulos não podem ser instanciados e não existe herança de módulos. Uma das maneiras de usar módulos é como namespaces.

Veja o post completo no blog Ruby Fundamental:
Módulos como namespaces

Veja também os outros posts do blog Ruby Fundamental:


26set2011

@SF 2011

(0) comentários
Last year my visit to San Francisco was really fast, and i was really involved with the Solaris Express Program (Solaris 11). This year i should be at SF between October/4 and October/11 (my birthday is October/9, so good time to celebrate ;-). So i hope to have time to talk (with beers) with old [...]


23set2011

Irei palestrar na RubyConf Brasil 2011

(0) comentários

A RubyConf Brasil é a maior conferência com foco em Ruby da América do Sul e é comparável em tamanho às maiores conferências de tecnologia no continente.

O evento desse ano acontecerá nos dias 3 e 4 de novembro, no Centro de Convenções Frei Caneca, que fica próximo à avenida Paulista em São Paulo.

Irei palestrar, juntamente com Ricardo Bernardelli, sobre a mudança de arquitetura da WebStore, loja virtual desenvolvida pela equipe de SaaS da Locaweb.

Na palestra Multitenancy em Rails: cortando custos e aumentando capacidade, iremos falar como a escolha de uma opção não tão usual de multitenancy em Rails melhorou a arquitetura da WebStore, que antes possuía 1.000 clientes, distribuídos em 12 servidores Web, e passou a utilizar apenas um servidor com mais 4.000 clientes.

As inscrições para o evento foram abertas ontem, com valor promocional de R$ 150,00 até 27/09/2011, e espera-se mais de 700 participantes, a exemplo do que aconteceu na edição do ano passado.

A programação, lista completa dos participantes e demais informações você tem no site do evento.


22set2011

Como recortar Email Marketing

(0) comentários

Tarefa chata !
Desenvolver Email Marketing envolve recorrer a uma estruturação em <table>, que a tempos deixamos para trás.

Pois é, não adianta seguir padrões web, fazer Tableless, ou querer usar bastante css. Simplemente não vai funcionar.
Se no desenvolvimento de sites, nossos vilões são os browsers do mercado, e as diferenças de renderização, bugs e versões dos mesmos, num Email Marketing, a dor de cabeça dos Desenvolvedores FrontEnd, são os clients de email.

Outlook 2007, Outlook 2003 (mais uma vez a Micro$oft complicando a nossa vida, com versões diferentes de um mesmo software, e a incompabilidade/incosistência deles), gmail(um dos mais chatos para desenvolver emm), hotmail… e por ai vai.

Felizmente, algumas técnicas são conhecidas, mais ou menos como um ‘caminho das pedras’. Seguindo dicas simples, é possível gastarmos menos tempo nisso, e entregar um código HTML bastante satisfatório no quesito cross-client.
Sobre a compatibilidade, veja: Guide to CSS support in email.

Vamos lá, algumas regras:

Durante o design da peça:

Não use background-image

Como vc pode ver na tabela do link acima, background-image, não funciona nos clients de emails mais usados atualmente: hotmail, outlook, gmail.. portanto, não use. Peça para o designer fazer o layout, pensando que onde tiver texto, o fundo precisa ser cor sólida.
background-color funciona bem, e vamos usar a moda antiga:

<td bgcolor="#000">

No início do recorte:

Use a ferramenta slice do Photoshop. Pense em recortes horizontais.

O atributo rowspan é problemático

Por isso que eu disse para pensar em linhas. Não faça rowspans. Nem perca tempo. Irá quebrar.
Use e abuse dos colspans, mas o row nunca!

Nem pense em margin e padding

style="margin: yypx; padding: yypx;"

Vai funcionar nos teus navegadores enqnto vc estiver testando, porém nos clients de email não.

A regra agora, é fazer todo o espaçamento e divisão entre blocos, com fatias de imagem.
Para isso, o ‘Save for web’ do Photoshop, marcando a opção: ‘HTML and images’, é o que temos para agilizar o processo.
Lembre-se de fazer os teus slices o mais folgados possível. Deixando espaço para a direita e para baixo, prevendo uma futura diferença de fontes entre sistemas operacionais.

Começando a mexer no html:

Declare width e height em todas as TDs

Depois de exportar com o photoshop, preciso sair colocando altura, lagura e alinhamento vertical em todas as células da tabela.

Declare align=”top”

Em todas as imagens. Isso vai evitar um espaçamento entre uma linha e outra em clients como o gmail.
Em alguns textos, é interessante usarmos align=”bottom” e middle em nossas TDs. Tudo bem, podemos usar. Mas mantenha as TDs de imagens com o valor top.

Declare display: block em imagens de uma linha

Aquelas imagens que pegam a largura toda da tabela. Aquela nossa TR que só tem uma TD dentro dela, com uma única imagem.
CSS inline novamente. Declare display: block; nessas imagens.

Colocando texto, onde deve ser texto:

Abuse da tag font

Eu nem lembrava mais dessa tag.. mas para recorte de EMM, é melhor garantir que vai funcionar na maioria dos clients, e o mais perfeito possível.

<font></font>

Não vamos cair na tentação de usar um <p>, <span>.. ou tags do tipo. Dificil prevermos quais serão as definições padrão do box model dessas tags. A tag <font> funciona bem. Façamos todos os nossos textos com ela.

CSS inline

Isso! Não temos ‘reaproveitamento’ de código fazendo email marketing. Note que a tag link e style, não funcionam no hotmail e gmail respectivamente. Portanto,

style=""

neles !

A família de propriedades css font funciona bem

Em testes que fiz, tentando usar o size da tag <font>, nunca ficava bom. Vale lembrar que o sistema operacional entra como variavel nesse desenvolvimento também. Uma font 12px Tahoma, no MAC fica de uma forma e no Windows, de uma outra completamente diferente(espaçamento de letras, anti-alising..).

Então, aqui usamos css inline.

Links! Links!

Afinal de pouco adiantaria nossos emails marketings, se estes não tiverem links.
Para links em textos, devemos usar livremente a tag de âncora <a>, porém naqueles botõezinhos e banners que o designer fez, não vale a mesma regra. Melhor aqui é usar imagem mapeada!
Isso mesmo. Use #map. Se você tentar usar algo como:

<a href=""><img src="..." /></a>

Você terá problemas com isso.

Será que isso é tudo?

Talvez não, mas posso garatir que ao menos é o suficiente para os clients de email mais conhecidos e utilizados.
Se ainda assim, você estiver com dúvidas, e precisar de mais dicas, este texto: http://www.campaignmonitor.com/design-guidelines/(inglês), é a minha última dica.

É trabalhoso

Realmente é. E o ínicio do recorte, em que temos que colocar largura, altura, valign em todas as TDs, align=”top”, em todas as imagens, display: block; em todas as imagens que estão sozinhas em uma só linha, e colocar o caminho completo em todos os atributos src=”" das nossas imagens, é um tanto quanto repetitivo, e braçal.

Por isso, desenvolvi essa ferramenta para recorte de Email Marketing. Lógico que não faz milagre, mas com umas Expressões Regulares e php, faço essa parte braçal, de entrar com o HTML:

<tr>
    	<td><img src="images/img1.jpg" width="40" height="20" alt=""></td>
    	<td><img src="images/img2.jpg" width="56" height="13" alt=""></td>
</tr>

E sair:

<tr>
    	<td width="40" height="20" valign="top"><img src="http://wbruno.com.br/images/img1.jpg" width="40" height="20" alt="" align="top"></td>
    	<td width="56" height="13" valign="top"><img src="http://wbruno.com.br/images/img2.jpg" width="56" height="13" alt="" align="top"></td>
	</tr>

Ou seja, a parte chata resolvida.
Dai resta apenas trocar os slices onde deve ter texto, por texto mesmo formatado segundo as dicas acima.
É isso. Espero que ajude vocês.

22set2011

19ª Maratona Pão de Açúcar de Revezamento 2011

(0) comentários

Dia 18 de setembro de 2011 rolou a 19ª Maratona Pão de Açúcar de Revezamento nos arredores do Parque do Ibirapuera.

O percurso de 42,2km poderia ser feito por equipes de 2, 4 ou 8 participantes. Eu participei correndo em uma equipe de 8 integrantes.

A equipe inteira fez a corrida em 03:12:36, com o tempo médio por km de 04:35, e termina na 33ª posição na classificação geral.

Nos 5.275 metros que corri, meu tempo foi por volta de 00:26:30.

Foto de MidiaSport

Foto de MidiaSport

Foto de MidiaSport

Foto de MidiaSport


19set2011

What Is Machine Learning?

por em Sem categoria
(0) comentários

Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. Machine learning is so pervasive today that you probably use it dozens of times a day without knowing it. Many researchers also think it is the best way to make progress towards human-level AI. In this class, you will learn about the most effective machine learning techniques, and gain practice implementing them and getting them to work for yourself. More importantly, you'll learn about not only the theoretical underpinnings of learning, but also gain the practical know-how needed to quickly and powerfully apply these techniques to new problems. Finally, you'll learn about some of Silicon Valley's best practices in innovation as it pertains to machine learning and AI.

 http://ml-class.org/

 

 

Permalink | Leave a comment  »

17set2011

Alguns livros que já li

(0) comentários

Post meio preguiçoso hoje.. mas é sábado ne?!..

Depois eu quero fazer um post para cada um desses livros, indicando(ou não) eles.

Só está faltando 2 nessa foto, o de CSS do Maujor, e o de Ajax com jQuery(do Maujor também).
Ahh, também já li O Design do Dia-a-Dia, que peguei emprestado do Designer da empresa.

E um de javascript OO, que achei ótimo.(a empresa comprou pra mim). [depois vejo o nome dele]
Object-Oriented JavaScript [Create scalable, reusable high-quality JavaScript applications, and libraries] – Stoyan Stefanov

É isso. =)
Me indicam algum outro ?

15set2011

Saindo da zona de conforto

(0) comentários

Hoje é meu último dia na Locaweb. Depois de quase dois anos (tudo isso, acredita?), decidi sair da minha zona de conforto. Após bater um papo com um dos meus chefes (que na verdade era para ser uma comida de rabo, em inglês, feita de forma elegante), percebi que tinha passado da hora de eu seguir o meu próprio caminho. Com muitas coisas rolando ao mesmo tempo, eu já não conseguia me dedicar à Locaweb como as pessoas esperavam que eu fizesse. Pensei bastante sobre tudo isso e sempre chegava à mesma conclusão. Era hora de seguir em frente.

A Locaweb é uma grande empresa para se trabalhar. Pessoas inteligentes, ambiente descontraído… se você entrar lá e estiver disposto à aprender, vai sair muito mais esperto. Eu aprendi muita coisa lá e também fiz muitas amizades (vocês sabem quem são). Não era minha intenção sair neste momento, mas tem coisas que vem para dar um chacoalhão, meio que dizendo “E aí? Vamos em frente de verdade agora?”.

Bem. E agora, qual é o plano? Continuarei fazendo as coisas que já fazia. O Codeplane vai muito bem, obrigado. Isso não significa que não tenha coisas para melhorar. Já estou trabalhando em um bug tracker, que está demorando mais do que eu tinha planejado, por causa dessa minha saída da Locaweb. Também quero implementar outras coisas como webhooks e, quem sabe, a tão pedida visualização de código, nos mesmos moldes do Github.

Tem o HOWTO, que está muito bem, também. Sempre com turmas lotadas (mais de 300 pessoas já passaram por lá), consigo fazer ali algo que sempre quis: ensinar. Para quem acha que caí de paraquedas nisso, minha intenção desde que estava na faculdade era ensinar. Era isso que eu fazia no meu estágio, e era isso que eu pretendia fazer profissionalmente no futuro. Consegui suprir essa minha necessidade por algum tempo escrevendo tutoriais, sempre pensando em quem fosse ler. Quando comecei a aprender Node.js e consegui criar uma versão realmente útil do Presentta, vi que eu podia investir nisso. Recebi bastante elogios na forma como os workshops são apresentados, então acho que estou fazendo um bom trabalho.

Existem outras ideias que irei tirar do papel aos poucos. Alguns produtos que quero fazer… enfim, o futuro promete! Eu tenho plena certeza de que a jornada será dura. Mais dura do que qualquer coisa que já enfrentei até então. Tenho picos de medo, alternados com aquele sentimento de que tudo vai dar certo. Sorte a minha que tenho uma esposa que me encoraja em tudo, um pai que sempre está lá quando preciso, e amigos que acreditam em mim. Mas mesmo assim, desejem-me sorte. Nunca é de mais.

15set2011

Agile Product Discovery in a Non-Startup Environment

(0) comentários

I mentioned here about my lean startup Experiment (phase 1 and phase 2). I’ll post an update on this topic soon.

Here I want to share another experiment I’m running. I’m trying to take the ideas I used in my lean startup experiment in a non-startup environment.

Locaweb has almost 700 employees now. We ended 2010 with approximately $100M in revenue. We have around 130 people in our engineering group which include software developers, system administrators, user experience designers and product managers. We decided to use the SaaS team – around 25 people – as the group who will be part of the experiment.

I presented to the group my lean startup experiment and proposed that we experimented doing the same.

So we now have 4 phases for the Agile Product Discovery:

  • Phase 1: figure out what to do
  • Phase 2: specify the product
  • Phase 3: implement the product
  • Phase 4: monitor the product performance

We decided to break phase 1 into 3 steps domes in 3 different days in small chunks of 3 hours each. However, we realized that it would be more beneficial to work on the 3 steps in one full day instead of breaking it into 3 separate sessions in different days.

Phase 1 – Step 1 – Product Ideas

First phase of the experiment was to brainstorm product ideas. We used 2.5 hours for this phase. We divided the group into 5 groups of 5 people each and the groups have to come up with product ideas or feature ideas for existing products. The only constraints were that the idea should be targeted to SMBs, the target segment for Locaweb. Should not be targeted to niche groups such as lawyers or medical doctors. Should be possible to develop an MVP (Minimal Viable Product) in 2 days with no interruptions.

Each group come up with 10+ ideas so we were able to generate a total of 50+ ideas. Each group had to filter the ideas down to 5. Then each group presented the ideas to the rest of the team, who made questions and decided what ideas to move to phase 2. At the end of the session we decided not to included any features of existing products, only new products should go to the next phase. We end up with 13 products in our list!


Phase 1 – Step 2 – What Is The Problem?

For phase 2 we got more 3 hours. During 2.5 hours the 25 people self organized to define for each product what was the problem that the product was solving, for the problem will be solved and why it is worth to solve this problem.

From the 13 products that came out from phase 1, we dropped 4 and kept 9.



Phase 1 – Step 3 – Creating Pages and Ads

In step 3 we created the pages using unbounce and the campaigns with Google AdWords.


Final remarks about phase 1

This is it for phase 1 – figuring out what to do.

It’s a bit harder to do product discovery in a non-startup environment. Even if you have full support from senior management, it’s difficult to get away from day-to-day tasks. For this reason, as I mentioned earlier, I suggest doing the phase 1 in a full day and not divided into 3 steps in different days as we did.

Other than that, the creative process from idea generation to single page plus ad implementation was quite fun and engaging. The team was really energized. :-)

In future posts I’ll comment on the results of phase 1 and the work done in phases 2 and 3. Stay tuned!

14set2011

Project Kronos: XenAPI on Debian and Ubuntu

por em Sem categoria
(0) comentários

The XCP team would like to formally announce Project Kronos, our port of XCP’s XenAPI toolstack to Debian and Ubuntu dom0. This will give users the ability to install Debian or Ubuntu, and then just do ‘apt-get install xapi’ in order to build a system that is (roughly) functionally equivalent to a standard XCP distribution.

This project provides a number of benefits. First of all, it will provide Xen users with the option of using the same API and toolstack that XCP and XenServer provide. It will give early adopters the chance to try out new changes to the XenAPI before they get released in new XCP and XenServer versions. And because we’ve ported all of our toolstack to build on Debian, it’s now much, much easier to build our tools outside of an SDK VM.

Permalink | Leave a comment  »

Switch to our mobile site