Monday, December 10, 2012

Raspberry Pi: UI + web server!

Raspberry Pi: UI + web server!


Boas pessoal, desculpem a demora em postar conteúdo, fiquei afastado esse mês todo... não só devido ao trabalho e vida pessoal, mas também a projetos que estive fazendo! :D

Bom em um destes meus projetos, resolvi que iria gastar um tempo comprando um raspberry pi (é eu sei, ja deveria ter feito isso antes), mas eu estava relutando em comprar um, visto que ja possuo uma Pandaboard ES ( http://pandaboard.org/ ).
Mas enfim, comprei um, e vou colocar a minha primeira experiência com ele... do momento que comprei até onde parei, ou seja, um servidor web em casa.

Após ouvir muita coisa sobre o raspberry pi, desde uma galera usando pra educação até pra produção resolvi testar!
Vi muita gente falando onde comprar, que é difícil, e realmente é, muita gente esta atrás dessa plaquinha, assim como do arduino. Mas pra facilitar minha vida, decidi que não iria comprar apenas a placa, afinal é preciso muito mais do que apenas ela para rodar.
Entrei no site da Adafruit e comprei o starter kit deles ( starter kit ). Realmente o preço não é dos mais baratos, mas nada que um cartão internacional e uma conta do paypal não possam lhe auxiliar no pagamento.
Comprei e fiquei esperando (detalhe que no momento que escrevo o post 10/12/12 eles não possuem em estoque, mas fique de olho), 2 semanas depois chegou em casa o pacote. Tudo certo, vieram todos os items, em suma o que vem:

  • Raspberry Pi model B (pra ver a diferença entre o modelo A e B - http://elinux.org/RPi_Hardware);
  • Cartão Micro SD + Adapter de 4GB;
  • Caixa de acrílico da Adafruit! :)
  • Raspberry Pi  Badge... :) (eu colei o mesmo em cima da caixa de acrílico! ficou show olha a foto!)
  • E outras coisas + ...
Legal neh, chegou abri e blz! Agora você se pergunta o que fazer? Bom, eu não tenho um monitor / televisor com entrada HDMI e não estava afim de usar a saída RCA também, então eu adiquiri um conversor hdmi to vga no dealextreme. Ok, eu não esperei o pi chegar pra fazer isso, na verdade ambas mercadorias chegaram praticamente juntas.




PS: além de usar no pi, eu tenho uma pandaboard, como falei no começo do post, então esse conversor é pra usar nos dois!

O próximo passo é ligar tudo... conectei todos os componentes, mas ainda falta uma coisa pra sair rodado o pi... instalar o SO que você deseja usar.
Como início, fui testar o Occidentalis v0.2 que é uma distro modificada pela Adafruit da Raspbian “wheezy”.
Fiz o download e instalei no cartão SD seguindo os passos do tutorial que esta no link acima da distro. Iniciei o pi e bing! Estava la a UI do Occidentalis, bem simples e rápido... mas eu não gostei.
Comecei a olhar na net as opções e vi que era possível instalar o Arch Linux ARM, uma distro derivada da Arch Linux que funciona em processadores ARM e pra minha surpresa a pandaboard também é suportada! FTW \o/

Para instalar no pi, bem simples! Simples até demais, faça o download da imagem e grave a mesma no SD card, eu usei o image writer que ja vem pré-instalado no Linux Mint para fazer isso e foi de boa... Reiniciei novamente o pi, agora com o cartão sd e a instalação do arch e depois de uns 10 segundos eu tinha um shell linux pronto para usar!!

Agora o primeiro passo é atualizar seu Arch Linux... faça o login usando root : root.
O shell será será liberado, para atualizar o Arch Linux utiliza-se do pacman, então realize um:

$ pacman -Syyu

Isso fará com que todos os repos sejam atualizados e fará em seguida um update no sistema... aguarde vários minutos! Não se esqueça de estar conectado em uma rede de dados para isso, claro...

Depois de atualizar o sistema, minha sugestão é alterar a senha do root e criar um novo usuário!

Use o comando abaixo para alterar a senha do root!

$ passwd

E em seguida faça:

$ adduser

E siga as instruções... quase tudo pode ser o padrão mesmo... só não esqueça da senha!
Feito isso, você, assim como eu pode desejar ter uma UI para interagir mais facilmente (ou instalar por diversão mesmo!).
Eu segui os tutoriais na wiki do Arch Linux para instalar o LXDM + XFCE4 e deixar o pi +/- com a cara do meu desktop (não que isso fosse necessário, ja que ele será um servidor, mas mesmo assim...).

Antes de mais nada para executar qualquer UI em linux deve-se instalar o X Windows System. Para isso basta você executar:

$ pacman -S xorg-server xorg-apps xorg-xinit xorg-twm xorg-xclock xterm xorg-drivers

Isso vai garantir que o x server todo será instalado, assim como qualquer outros drivers e widgets necessários.

Depois vamos instalar o lxdm e xfce4:

$ pacman -S lxdm xfce4 xfce4-goodies sudo gedit

No meu caso eu ja instalei o sudo e gedit também, apesar do gedit ser um pouco pesado para carregar... ainda não testei pra ver se o emacs funciona de boa.

Pronto!!

Para executar o lxdm e xfce4 ao iniciar o pi, ainda precisamos alterar o arquivo /etc/lxdm/lxdm.conf e mudar a linha session=/usr/bin/startlxde para session=/usr/bin/startxfce4 .

Para editar o arquivo: 

$ sudo nano /etc/lxdm/lxdm.conf

E em seguida executar o systemd para ativar o serviço do lxdm:

$ systemctl enable lxdm.service

Reinicie o pi, agora você deve ter uma interface gráfica aparecendo, faça o login com o usuário que você criou e pronto!

Eu enfrentei um problema bem chato, meu monitor não esta suportando 100% o hdmi do pi, para isso bastar alterar a propriedade disable_overscan do arquivo de configuração do Arch Linux.
Execute:

$ sudo nano /boot/config.txt

Desabilite a linha (tire o # da frente), disable_overscan=1 . Além disso altere as propriedades do overscan logo abaixo, é tentativa e erro mesmo, coloque um valor e reinicie o pi pra ver se deu certo.

Seu startup inicial esta pronto... entretanto...

Quando comprei meu raspberry pi que vem no starter kit da Adafruit, notei que ele não possui conexão wireless (uma pena não??), mas isso pode ser remediado comprar um wireless module, olhei no site e achei esse: Miniature WiFi (802.11b/g/n) Module: For Raspberry Pi and more, comprei junto.

Mas para você ter uma interface bacana para interagir com o modulo é preciso instalar umas coisas a mais:

pacman -S networkmanager network-manager-applet xfce4-notifyd 
$ systemctl enable NetworkManager.service
$ systemctl start NetworkManager.service

Isso vai instalar e inicializar uns widgets bacanas para você controlar seu usb wireless e conetar na sua rede wifi sem precisar digitar comandos no shell!! :D
Por padrão o driver desse dispositivos usb que comprei vem por default ativado, bastando apenas a reinicialização do pi pra tudo funcionar.

Pra finalizar vamos instalar o nginx, que é um web server muito bom e rápido.

$ pacman -S nginx
systemctl enable nginx
systemctl start nginx

Se você quiser um web browser para rodar no seu pi, instale o midori, pois o firefox e chrome não são suportados na arquitetura x86 (bom pelo menos eles não estão listados no repo do arch linux como disponíveis para arm).

$ pacman -S midori

E é isso ae, por enquanto é isso... no próximo post vou mostrar como instalar o python e uWSGI para fazer seu web site rodar no pi!

falowaer




Sunday, October 21, 2012

Procurando objetivos no Trabalho


Procurando objetivos no Trabalho

Nos últimos meses tenho me deparado com uma dúvida, qual o objetivo do meu traabalho? Sim, afinal, porque trabalho na área de TI? E porque sou programador?
Pode parecer uma pergunta muito simples para alguns, ou muito difícil de responder para outros, mas a questão fica, você sabe o motivo do seu trabalho?

Durante minha defesa de TCC da pós-graduação, eu li muitos livros sobre motivação e times de alto desempenho, mas uma coisa que me chamou muita atenção nessas obras foi a falta de direcionamento em como encontrar os objetivos dos integrantes (ou pessoas) dos times. Talvez seja polêmico demais o assunto, foi como discuti com um amigo do trabalho: “Como saber os objetivos das pessoas, se muitas vezes nem elas mesmas sabem o que desejam?” Ou ainda pior, devemos ajuda-las a encontrar seus objetivos... Parece simples, mas como ajudar alguém encontrar um objetivo para trabalhar?


Tenho pensando muito e por conseguinte tentarei criar uma luz no fim do túnel para isso. Acredito que o primeiro ponto a se questionar é se a pessoa gosta do seu trabalho, você como líder tem a obrigação de verificar se o integrante do seu time gosta daquilo que faz ou apenas quer ganhar o pagamento no fim do mês. Acredito que chegar para a pessoa e perguntar é algo totalmente inútil, nem todos irão categoricamente afirmar para o chefe que não gostam, ou mesmo odeiam o trabalho que fazem, mas como podemos tirar isso das pessoas? Mas porque devemos descobrir se as pessoas gostam de seu trabalho? Esse ponto é importante caso a empresa espera que seus funcionários melhorem os métodos e processos utilizados ou mesmo criem novas situações de ganhos para a organização. Gostar do que se faz abre um leque de possibilidades e buscas para melhoria. Isso não significa que quem não gosta do trabalho, não perseguirá isto com afinco, entretanto o indivíduo que possui prazer no que esta fazendo tenderá a se esforçar mais para essa melhoria.

Para descobrirmos quais são nossos objetivos, acredito que primeiro devemos ter uma noção de quem somos e quais nossas características, para isso existem dezenas (e talvez centenas) de técnicas para se descobrir isso. Por existirem tantas técnicas muitas acabarão por darem resultados parecidos, algumas que utilizei em mim mesmo (gratuitas ou não) são demonstradas abaixo:


Descobrindo seus Pontos Fortes (Strength Finder).

Tem um livro que achei bem interessante (o qual um amigo me apresentou) chamado StrenghtFinder 2.0. Este livro vai lhe ajudar a descobrir quais são os pontos fortes das pessoas que o cercam e seus próprios. A partir daí podemos começar a analisar se o que fazemos é realmente direcionado a nossos pontos fortes ou “apenas estamos dando soco em ponta de prego”.

Isso não significa que descobrindo quais são os pontos fortes eles irão nos direcionar a nossos objetivos, muito pelo contrário, isso vai apenas nos dizer se o que fazemos no trabalho é algo que nossa personalidade pode absorver como simples e prazeroso. É lógico afirmar que ao realizarmos tais tarefas estamos seguros, temos a facilidade de assimilar o assunto e executar a ação necessária para a resolução do problema.

O livro não coloca quais tarefas são mais simples para cada perfil, entretanto ele apresenta um panorama geral em como cada ponto define algumas das atividades que procuramos exercer. Somos puxados a atividades onde nossos pontos fortes brilham.

Isso pode nortear sua decisão sobre o que perseguir em sua vida e como direcionar estudos e esforços.

Conforme eu disse, realizei o teste, e realmente os pontos fortes colocados pelo programa são muito (se não 100%) correlacionados com minha personalidade. Para se ter uma idéia, eu sou um cara competitivo, isso pode ser um ponto forte, como fraco, tudo dependerá de como utilizo essa informação na execução das minhas tarefas e no dia dia. Um detalhamento maior sobre meus pontos fortes e como eles são apresentados a você pode ser conferido aqui.


Keirsey Temperament Sorter - II (Personality Instrument).

Outro teste interessante e viável de se realizar é o Keirsey Temperament Sorter. Aqui a idéia é receber uma visão geral de como você age e do seu possível temperamento diretamente relacionado ao seu trabalho e sua vida.

According to Keirsey Temperament Theory, there are four basic temperament groups which describe human behavior. Keirsey’s four temperaments are referred to as Artisans™, Guardians™, Rationals™ and Idealists™. These four temperaments can be further subdivided, often referred to as “Character Types”. There are four types of Artisans, four types of Guardians, four types of Rationals, and four types of Idealists.

Todos estes testes dão a você uma visão de si mesmo e como observar aspectos de nossa vida que muitas vezes não nos damos conta pela falta de percepção que temos de nós mesmos.
A possibilidade de ambos os teste revelarem aspectos intrínsecos da sua psique e que são parecidos é muito grande. Realmente em meu caso ambos os testes deram resultados parecidos, na verdade um é complementar ao outro, mas se você olhar em detalhes, mostra um perfil da minha pessoal.


Eu completo meus objetivos?

Ambos os testes podem nos mostrar nosso perfil mas não mostrará quais objetivos podemos possuir ou obter, mas eles nos darão um guia para descobrir objetivos que poderiam estar ocultos.
Apesar de tudo, existe algo muito importante nestes objetivos ou em como alcança-los. Uma pesquisadora americana (Angela Lee Duckworth) “descobriu uma característica” que pode nos dizer se possuímos ou não a atitude mental suficiente para finalizar objetivos a longo prazo. Isso poderá influenciar diretamente o cumprimento ou não daqueles objetivos que traçarmos ou dicidirmos como corretos para nossa vida e trabalho.
Bem, ela nomeou esta nova característica como GRIT (Perseverança e paixão por objetivos a longo prazo), e seu significado transcrevo abaixo:

Definimos grit como perseverança e paixão por objetivos a longo prazo. Grit implica em trabalhar arduamente em desafios, manutenção do esforço e interesse ao longo dos anos, apesar do fracasso, adversidade e plateaus de progresso. O indivíduo com essa característica aborda as realizações como uma maratona; A vantagem dele ou dela é a stamina. Considerando que a desilusão ou tédio são sinais para outros que é hora de mudar a trajetória e cortar as perdas, o indivíduo com grit permanece no curso.

Descobrindo se nossa característica GRIT é alta ou não pode nos indicar o motivo da não conclusão de determinados projetos e objetivos. Mas isso não indica que possuímos uma desculpa, mas sim um ponto de atenção todas as vezes que não terminamos um objetivo, e isso pode nos forçar a não desistir. Afinal devemos utilizar nossos pontos fortes, aceitar nossas fraquezas (mas lutar contra elas mesmo assim).

No site da própria pesquisadora existe um teste online para que você possa verificar se seu nível de GRIT é alto ou não (é uma escala de 1 - 5). Eu recebi um valor de 2.88 no teste de grit, e se observarmos em meu perfil, verifico que possuo um ponto forte chamado Ideation, que tem como característica “... Driven by your talents, you may dream up new tasks to do ...”. Ou seja, todos meus objetivos mesmo os a longo prazo, devem ter tarefas curtas que não demandem muito tempo, pois caso contrário poderei abandonar a tarefa ou objetivo para buscar outras mais interessantes.

E agora?

Toda essa análise de um perfil é importante para nós conseguirmos idealizar possíveis objetivos a serem seguidos. Devemos lembrar ainda, que essa tarefa apesar de poder contar com a ajuda externa (no caso, testes, documentários, biografias e muito mais) é um trabalho totalmente interno e intensivo, que cada indivíduo deve realizar. A organização pode facilitar essa descoberta dando oportunidades de crescimento e inovação para cada um de seus colaboradores.


“We have a strong sense of why we exist and why we do what we do. We believe that our legacy – as a company and as individuals – should be to make a difference in the world around us.” - Think with Google

Uma filosofia na qual se basear é um fato importante para se criar objetivos, assim como o google tem sua filosofia (conforme ja falado em outro post), minha sugestão é que você tente criar a sua filosofia (mesmo que para isso você utilize pedaços das filosofias de outras pessoas ou organizações).



falowaer

Monday, September 17, 2012

Melhorando a performance de sistemas web.


Melhorando a performance de sistemas web.

Com a grande migração de muitos sistemas para a internet após o ano 2000, muitas técnicas foram propostas para a melhoria no processo de carregamento de sistemas web. Essas melhorias visam, claro, uma melhor performance de acesso para os usuários dos sistemas.
Nesse post irei tratar de algumas técnicas que são principais, de fácil identificação e que podem ser implantadas rapidamente. Um detalhe importante é que todas as informações colocadas aqui são as mais simples possíveis, por conseguinte se forem implantadas em ambientes de produção pode vir a ser necessário algum tipo de análise de segurança (não que todas irão precisar claro!). Por onde começar?


Um start interessante é instalar estas duas ferramentas, as quais irão proporcionar uma visão de como nossa página é carregada e sugerir melhorias a serem feitas:


Após isso, comece realmente a melhorar sua performance!


Minify your files!!!

A primeira técnica e que considero a mais simples de todas, é minificar e agrupar seus arquivos estáticos. Mas o que são arquivos estáticos? Eles são como páginas estáticas (Static Web Pages[1]), ou seja seu conteúdo não muda de acordo com o acesso. Os exemplos mais comuns são arquivos javascript, css e imagens!
Normalmente esses arquivos não são tratados para contemplar esse tipo de situação, e isso pode vir a se tornar um problema de payload[2] conforme vamos adicionando mais e mais bibliotecas, classes e imagens sem otimiza-los.
Algumas soluções para esse problema se resumem em minimizar manualmente os arquivos usando ferramentas como (estes são os top 4 na minha busca do Google) e posteriormente agrupando todos em 1 (um) só arquivo:

Javascript


CSS:


Dentre os outros milhões de ferramentas online, eles podem nos ajudar a melhorar a performance de nossa aplicação no que concerne no carregamento da bibliotecas e códigos que utilizamos, mas não são nem um pouco produtivos, pois devemos fazer manualmente essa cópia e compressão e ainda precisamos manter 2 (dois) arquivos (o original e o minificado).
Como melhorar isso? E sermos mais produtivos?

Podemos utilizar ferramentas automáticas que façam isso, alternativas é o que não faltam também. Particularmente conheço muito poucas ferramentas desse tipo em PHP, mas uma me chamou ultimamente:


A idéia aqui é a mesma, otimizar e automatizar a minificação dos arquivos estáticos, lembrando que ele não serve para imagens, mas sim para javascript e css.
Em outras linguagens temos alternativas ja incorporadas nos frameworks (que não é necessariamente o caso do Zend Framework[3], mas o minify pode ser usado em conjunto[4]), por exemplo em Django[5] temos um app chamado django-compressor[6] que faz a minificação e agrupamento dos arquivos automaticamente, sendo necessário apenas ativar o package.

Para imagens, podemos utilizar de alguns programas para compressão, alguns exemplos bem interessantes, sugeridos pelo Google são [7]:




GZIP[8] on the fly!

Outra técnica bastante utilizada em sistema/sites da web é de comprimir seus arquivos, aqui vale a máxima de que 10% de redução pode diminuir em muito o payload de seu usuário!
Vou dar um exemplo bem simples e surpreendente, eu utilizo a biblioteca ExtJs[9] que tem um arquivo .js de 1Mb! Isso mesmo, e é 1Mb ja minificado! Usando gzip diminuímos esse payload para 400Kb, ainda é muito? Pode ser, mais é um ganho de 50%. Ou seja 50% menos de carga que um usuário terá de carregar em cada acesso ao sistema.
Devo dizer que o gzip não serve apenas para arquivos estáticos, podemos comprimir todos os arquivos e nossas respostas AJAX[10] também, ou seja, todo nosso site será mais leve para o usuário carregar. O lado ruim? nosso servidor deve aguentar a carga para comprimir todos os dados antes de enviar de volta para nosso usuário.

Para habilitar o gzip em nosso servidor apache devemos apenas habilitar o módulo mod_deflate! Simples não? Claro que tem-se muitas configurações, mas de modo simplista devemos apenas executar em shell:

$ a2enmod deflate

Fazendo isso estamos prontos, todo o conteúdo do nosso site será compresso para cada requisição realizada. Outros servidores podem possuir outras configurações.
Em Django podemos habilitar a compressão via gzip sem precisar interagir com o servidor, para isso basta habilitarmos o middleware GZipMiddleware[11], fazendo com que nosso sistema use script’s em python para a compressão!




Finalizando por aqui...
Seus usuários agradecem, mesmo não sabendo disso... :D!

Estas são duas regras muito simples que podemos habilitar em nossos sistemas, fazendo com que a performance de carregamento seja melhorada.
No próximo post vou tratar sobre o varnish cache e cache headers no apache!








falowaer

Thursday, August 9, 2012

Fazendo um app no Heroku

Fazendo um app no Heroku



Fala pessoal?


Fiquei de colocar aqui no blog os passos os quais utilizei para fazer um currículo digital, pois bem... chegou a hora!


Como eu havia mencionado em uma postagem passada eu utilizei de algumas tecnologias, citarei todas com respectivos links:

  • python
  • virtualenv
    • Permite você criar ambientes separados em python, você pode escolher quais libs instalar, sem tê-las por todo o sistema. Funciona como um container para seu projeto.
  • flask
    • Um micro framework em python, bem simples e rápido, com baterias não inclusas. Mas com muitas baterias a disposição.
  • flask-assets
    • Extensão do flask (uma dessas baterias não inclusas), que permite você agrupar e minificar arquivos estáticos do seu app.
  • mongoengine
    • "The object-document mapper to connect Python and MongoDB". Vai lhe ajudar a melhorar a sua interface de conexão entre o mongohq e seu app!
  • jQuery
    • Se você ainda não usa esta perdendo muito!
  • twitter bootstrap
    • Conjunto de classes css e plugins jquery que vão lhe ajudar a deixar seu app mais bonito e funcional. É esse micro framework jquery é do pessoal do twitter.
  • font awesome
    • Fontes com ícones dos mais diversos, se você olhar não vai mais largar! ahhahahhahaha :D
  • git
    • Ferramenta de versionamento.
  • heroku
    • Nosso fornecedor de IaaS.
  • mongohq
    • Rodar o mongodb nas nuvens! Uhu!


Você pode estar se perguntando, "poxa vida, tenho de aprender tudo isso para colocar algo no ar la no heroku?".
Claro que não, o negócio é que eu quis experimentar um pouco mais, resolvi que iria colocar algumas coisas em um banco de dados noSQL, o que não é necessário.
Enfim, primeiro passo, foi criar localmente um ambiente (ok, não precisa ser apache pra isso, mas eu usei mesmo assim). O legal do flask e outros frameworks em python é que você pode subir um "web server" na linha de comando sem precisar configurar um apache da vida. Isso é um ponto positivo!

Pra colocar um site la no heroku é bem simples, só seguir esse tuto na página deles: Getting Started with Python on Heroku.

Depois de seguir estes passos bem simples do heroku e claro ter feito sua aplicação/site/whatever você pode ativar o mongohq. Para isso é só entrar na interface do heroku e solicitar a ativação do mongohq para sua nova app.
O heroku vai lhe retornar as informações de conexão com o banco, então você os coloca na aplicação. Como eu estou usando flask e o mongoengine, para cadastrar o banco de dados foi simples:




app = Flask(__name__)
app.config["MONGODB_DB"] = "app5632158"
app.config["MONGODB_USERNAME"] = "rdenadai@gmail.com"
app.config["MONGODB_PASSWORD"] = "yhgb2398"
app.config["MONGODB_HOST"] = "staff.mongohq.com"
app.config["MONGODB_PORT"] = "10050"
db = MongoEngine(app)



Bem fácil não? Ainda estou usando o flask-assets que é uma extensão bem bacana que permite você juntar os arquivos css/js em um único só, melhorando assim a performance da sua app na hora de baixar os arquivos estáticos do servidor!

assets = Environment(app)
js = Bundle('jquery.js', 'default.js', 'twitter-bootstrap.js', filters='jsmin', output='gen/packed.js')
css = Bundle('default.css', 'normalize.css', 'font-awesome.css', 'twitter-bootstrap.css', filters='cssmin', output='gen/packed.css')
assets.register('js_all', js)
assets.register('css_all', css)

Feito isso no app.py do seu app, pra utilizar é só ir nos templates e colocar:



{% assets "css_all" %}
<link rel="stylesheet" type="text/css" href="{{ ASSET_URL }}" />
{% endassets %}



{% assets "js_all" %}
<script type="text/javascript" language="javascript" src="{{ ASSET_URL }}"></script>
{% endassets %}

Fazendo estes passos, que achei bem simples (depois que você aprende são bem simples mesmo!), coloquei no ar um app no heroku!


Só não vá correndo contar isso pro seu chefe...

Falowaer


Thursday, July 26, 2012

Tradicional x Ágil

Tradicional x Ágil


Bom, hoje vou falar de um tema muito recorrente em minha vida e minhas pesquisas na internet. A velha discussão sobre tradicional x ágil!

Não vou falar especificamente de CMMI/MPSBr contra SCRUM/XP nada disso, mas principalmente sobre modelos de pensamento tradicional contra o ágil!

Acho engraçado o modismo exacerbado com relação a tecnologias e métodos, engraçado porque as pessoas não procuram se aprofundar nas questão desses modismos (seria um problema causado pela Síndrome da Pressa?) e simplesmente ignoram as premissas básicas ditadas por estes.
Nesse momento o pensamento ágil impera nessas pessoas!

"Precisamos aprender isto pois irá aumentar nossa produtividade!"

O imediatismo toma conta, assim verdadeira mentalização e aprendizado se perde, para dar lugar a "rápida escalada" da produtividade. Mas será que isso é mesmo o importante?
Na verdade o que fazemos é pegar todo nosso aprendizado, crenças e achismos tradicionais e colocar mais tradicionalismo em cima, achando que estamos melhorando, agilizando ou qualquer que seja a palavra. Mas a verdade é que não estamos. Estamos apenas colocando mais cobertura sobre um bolo de  1 metro de altura.


O problema é não conseguirmos sair de nossa zona de conforto, nosso Ok Plateau e outros mais nomes dados ao nosso verdadeiro medo (Aprendizado Contínuo). Então surgem aquela amálgama de soluções lindas e perfeitas, misturando o pensamento Tradicional com o Ágil, fazendo não só aumentar a produtividade como manter os lindos e complexos processos do modo como estão.
As pessoas se enganam, o poder é o que conta mais, por isso os métodos tradicionais são tão fortes ainda nas empresas e essa amálgama de soluções surge. Manter o pensamento tradicional, mas tentando agiliza-los o máximo possível.

Tudo isso só mostra que enquanto uns são extremistas demais (e corretos), outros ficam em cima do muro, destruindo e denegrindo a real imagem da agilidade. Escolha seu lado, ou você é tradicionalista ou agilista, esse meio termo, na verdade só serve para manter e postergar ainda mais o modelo mental tradicional e impedir o novo. Pare de querer ficar criando métricas e processos que impedem o real trabalho de ser feito! Não se esconda por trás dos processos, faça acontecer, crie e inove o quanto é necessário, não viaje na maionese, LEAN é a palavra para sua agilidade. Nada de ficar criando projetos monstros, meses de planejamento. MVP nisso! simples, rápido, responsável e parceria.
Ensine seu cliente ou mande-o embora! Parceria, nada de você compra e eu forneço, se até as empresas estão tentando criar um ambiente social para seus produtos, porque a sua empresa quer ir na contra mão?
Será que não é hora da sua empresa (você) refletir os rumos que esta indo e verificar se o que se esta fazendo é correto? Lembra da nossa conversa sobre Missão, Visão e Valor? Hora de parar de se esconder atrás das portas, tirar os esqueletos do armário e corrigir o que esta de errado.

Nunca é tarde para recomeçar...

Falowaer!

Friday, July 13, 2012

Currículum Vitae

Currículum Vitae

Boas! Essa postagem será um pouco mais técnica. Na verdade, nos últimos dias eu fiquei colocando no ar um "site" que na verdade é um currículo online meu. Pois é, você pode se perguntar: Currículo online? Mas não tem vários sites que fazem isso?

A resposta é sim, e ao mesmo tempo não.

Sim, existem vários sites que permitem você colocar la seu currículo, e muitos são bem bacanas! Mas ano passado, eu ouvi e vi um cara falar o seguinte:
"Então você trabalha com informática, e não tem um currículo online que você mesmo fez?"

Fiquei pensando sobre o assunto e cheguei a conclusão de que um currículo online feito por mim mesmo, passa a idéia, de que:
  • Eu sei fazer design de um site, mesmo que pequeno;
  • Sei codificar na linguagem que eu escolher pro meu "site";
  • Sei usar o banco de dados o qual escolhi;
  • Sei configurar, mesmo que basicamente um server.
Realmente eu sei fazer tudo isso, mas como colocar em 1 página A4 todas essas informações e outras mais para alguém avaliar? Alguns podem até afirmar que um currículo extenso vai afugentar os contratantes, mas se você possuir as duas opções (um curriculo em pdf de 1 página A4, e um "site" com uma bela descrição), pode vir a facilitar o contratante, quem se interessar poderia ir la no seu "site" e ler mais sobre você.

Perceba que a intenção não é ser um blog, mas talvez uma página agregadora, com informações extras que você queira colocar, no formato que você escolher!

Bom, finalmente resolvi fazer isso, e pra começar aprendendo mesmo, resolvi usar o heroku!
Como eu gosto muito de python e ja faz um tempinho que o heroku habilitou python la, resolvi que iria utilizar ambos!
Mas ai fiquei com uma dúvida, seria ideal usar o django pra fazer uma mera página? Achei mesmo que não, e acabei escolhendo usar o flask e não me arrependo não. É um framework bem simples, leve e rápido de aprender.
Acabei o "site", ficou muito legal, mas sabe quando você pode melhorar? Foi o que fiz!
Resolvi colocar o mongodb e o mongoengine rodando, para fazer algumas coisas simples e usar para evitar repetição de html (na parte das keywords e livros). Ficou jóia!
Com toda a certeza, ainda tem coisas que posso melhorar e acrescentar, como por exemplos os projetos que tenho online! É, eu tenho uns "programinhas" disponíveis na internet (mais especificamente no Google Code, mas vou coloca-los no github), que podem enriquecer ainda mais meu currículo online, sendo que no pdf A4 de 1 página não caberia (beleza que num tem tanto programa assim neh).

Resumindo? Não espero que consiga altos empregos com isso, mas acredito que possa dar um pouco mais de visibilidade para quem um dia poderá me contratar!


Quer ver como ficou o trabalho "pronto"? Clique aqui!

Na próxima postagem eu coloco todos os passos que fiz!
falowaer ;)