Category Archives: Portuguese

Backup

Como eu faço backups

Faz tempo que penso em escrever sobre as ferramentas e estratégias que utilizo para backups. Ao escutar esse episódio do Tecnocast sobre o assunto, decidi que era hora de documentar o que eu faço.

Meus arquivos pessoais (aka. pasta ~/)

my personal files

A pasta do meu usuário possui 3 cópias extras:

1. Assino o plano familiar (U$ 12,50 / mês) do CrashPlan, o qual realiza backup automatico e em tempo real do meu computador, da minha esposa e ainda do da minha mãe. Todos os dados ficam na nuvem e eu consigo recuperá-los a qualquer momento, a partir de qualquer lugar, de qualquer computador.

2. A segunda cópia extra dos meus arquivos ficam no meu TimeCapsule, que rodam diariamente de forma automática através do Time Machine.

3. Por fim, faço uma cópia mensal num HD externo (que é bem rápido graças à sua conexão USB 3) utilizando o rsync pra realizar um backup diferencial. O comando / parametros que utilizado para isso é:

rsync -a --progress --delete --delete-excluded --exclude "*.DS_Store" /Users/lucascaton/ /Volumes/Backups/lucascaton/

Arquivos importantes

important files

Ficam dentro da pasta do Dropbox. Ou seja, uma cópia extra além do CrashPlan. Time Machine e HD externo mencionados acima.

Arquivos encriptografados

important files

Se você utiliza OS X (Mac), é fácil criar uma pasta protegida com senha (tecnicamente é uma imagem de disco, mas você pode encarar como se fosse uma pasta). Veja como fazer isso nesse artigo de suporte da Apple.

Nessa pasta, eu guardo:

  • Códigos de recuperação de servicos com autenticação de 2 fatores;
  • Screenshots dos QR codes de autenticação de 2 fatores. É extremamente útil se você precisar resetar seu celular, já que o Google Authenticator (e outras apps) não salvam esses dados na nuvem (por motivos de segurança);
  • Chaves privadas SSH (pra acessar servidores);
  • Algumas poucas senhas que prefiro manter nessa pasta do que em gerenciadores de senha como o 1Password, o qual eu uso para todo o resto (veja mais informações sobre o 1Password no tópico “Senhas” no final desse artigo.

Arquivos que não ficam no meu computador

other files

Alguns arquivos eu não mantenho no meu computador por serem muitos grandes ou simplesmente por não fazer sentido tê-los comigo o tempo todo. Um exemplo são os vídeos do Reza a Lenda.

Eu os mantenho no Time Capsule e mensalmente faço um backup destes para o mesmo HD que mencionei no começo do artigo, também utilizando o rsync.

VPS

vps hosting

Faço backup das minhas VPSs através de scripts que realizam backups mensais (os quais rodam diretamente no servidor) e mandam esses arquivos para o meu computador (de novo através de um rsync).

Documentos (RG, CPF, passaporte, etc)

passport

Tenho foto de todos os meus documentos e estes ficam em uma pasta específica dentro do meu Dropbox, a qual é sincronizada automaticamente com o meu celular (através do iTunes), tornando-se disponível no meu celular mesmo quando não há internet disponível.

Fotos

pictures folder

Não ficam na nuvem (por enquanto). Também não utilizo nenhum software para gerenciá-las, apenas pastas organizadas por datas. E não chega a ser um problema: consigo ser disciplinado e manter tudo organizado. Nunca deixo nada no celular, quando o conecto ao computador eu já copio as fotos pro lugar apropriado.

Apesar disso, o novo Google Photos parece um bom lugar pra mantê-las de forma segura.

Músicas

spotify

100% das minhas músicas estão no Spotify. Assino o plano premium, então elas também ficam disponíveis off-line no meu celular.

Emails e calendário

gmail-and-google-calendar

Versões web do Gmail e Google Calendar. Simples assim.

Senhas

1password

Gerencio todas as minhas senhas através do 1Password, mas tem uma regra de ouro pra evitar problemas se a segurança do 1Password um dia falhar: a senha do meu Gmail não está salva em lugar algum, está apenas na minha cabeça – assim eu consigo recuperar a senha de qualquer serviço caso necessário, utilizando o recurso “Esqueci minha senha”, que a maioria dos serviços oferece.

Filmes e séries

itunes-and-netflix

Eu costumava alugar filmes e séries na locadora suéca (também conhecida como locadora do Paulo Coelho), mas comecei a fazer as contas: eu assisto uma média de 12 séries por ano, cada uma custa em média $25 por temporada no iTunes, ou seja, $25 por mês. Às vezes tem no Netflix e acabo gastando menos. Já alugar um filme recém-lancado em HD no iTunes custa em média $4. Moral da história: decidi parar completamente de fazer pirataria e comprar / alugar tudo da forma correta :-)

Conclusão

Ok, eu sei que sou um pouco (muito?) paranóico, mas pelo menos nunca perdi nada :D
Me conte nos comentários abaixo como você faz seus backups e o que você achou desse post!

Código em português

8 motivos pra programar em inglês

Vejo muitos brasileiros escrevendo código em português. Na faculdade até pode fazer um pouco de sentido por mais didático, mas vou apresentar alguns motivos pelos quais isso deve ser evitado no mundo real:

1. O motivo mais importante: inglês é o idioma internacional para código (e para documentações). Mais especificamente, o inglês americano é o padrão. Eu trabalho em uma empresa australiana e embora a Austrália siga a gramática britânica, o código que escrevemos segue a gramática americana (exemplo: “color” e não “colour”). Então se esse é o padrão mundial, por que não segui-lo?

2. Se você pretende um dia trabalhar fora do Brasil, potenciais empresas querendo te contratar vão querer ver seu código, mas não irão entender se estes estiverem em português. Então procure deixar seus repositórios no Github com código e documentação em inglês.

3. Os comandos e palavras-chave de linguagens em programação são em inglês, então mesmo que você queria escrever em português, vai acabar ficando inevitavelmente uma mistura.

4. Algumas linguagens e frameworks estão preparados para entender o inglês em termos de semântica. Exemplo: o Ruby on Rails sabe que a tabela no banco de dados para um determinado model deve ser sempre o nome do model no plural. Ou seja, ao ter um model “Person”, ele vai procurar uma tabela “people”.

5. Contribuições para projetos open-source devem ser em inglês. Eu sinceramente não conheço um projeto open-source famoso que não esteja em inglês.

6. Muitas empresas no Brasil já escrevem códigos em inglês. Então se eventualmente você começar a trabalhar em um dessas empresas, você terá que se adaptar de qualquer forma.

7. Acentos, “ç” e caracteres especiais não funcionam bem em todas as linguagens, fazendo que você tenha palavras escritas de forma incorreta se você as escrever em português.

8. Você treina e melhora seu inglês :-)

Como você contribui para um mundo melhor?

Somos consumidores assíduos de conteúdo (offline e especialmente online). E a idéia desse post é listar o que eu tenho feito em troca disso e também incentivar aos que não fazem a considerar a idéia! ツ

  • Eu mantenho esse blog desde 2009 (mais de 5 anos já!) com posts sobre Ruby, Rails, Linux, OS X, mobile, etc;
  • Mantenho também um canal no Youtube com screencasts técnicos;
  • No meu Github tem alguns projetos open-source, alguns bastante genéricos, como meus dotfiles e meus vimfiles;
  • Criei e mantenho alguns grupos de discussão, como Vim Users BR, Swift BR, Neo4k BR e Gxt (ExtGwt) [BR];
  • Faço parte do staff que cuida dos eventos do GuruSP. Quando eu morava em São Paulo eu ajudava mais, agora ajudo apenas remotamente.
  • Tenho um blog pessoal também, onde não escrevo sobre coisas técnicas;
  • Meu twitter é basicamente para discussões relacionadas à tecnologia;
  • Para finalizar: faço sempre que possível palestras e apresentações (às vezes online) sobre ferramentas interessantes que tenho usado (infelizmente algumas foram feitas em empresas e não estão públicas).

Não ganho nada fazendo essas coisas, mas é recompensador! ¯\_(ツ)_/¯

Mandem seus 2 cents nos comentários!

Um conselho para estudantes de computação

graduation cap diploma isolated on a white background

Enquanto eu divulgava o projeto do meu curso de programação pelas redes sociais, uma pessoa me fez a seguinte pergunta:

Terminei meu 1º semestre de Ciência da Computação e por enquanto, tudo parece tranquilo. Mas não deixo de me preocupar quando a coisa ficar realmente “interessante”. Fico pensando naqueles códigos de tamanho imenso, na lógica maciça empregada nele. Será que não enche o saco? Resolver bugs, procurando linha por linha onde está o erro? Valeu Lucas!

Minha resposta:

Olá! Interessante sua pergunta. Me lembro que na época de faculdade eu fazia estas mesmas perguntas :-)

Apesar de projetos / códigos crescerem, eu diria pra você não se preocupar muito com isso agora. Existem ferramentas que te ajudarão a organizar tudo isso. Exemplos: criação de testes automatizados, controlador de versões (como Git), bons editores (ou IDEs), etc.

Se você quiser saber como será sua profissão futuramente, uma boa maneira de ver isso na prática é olhar os pull requests de algum projeto open-source e ver o que está sendo discutido lá. Aproveite e veja os códigos também, você vai ver que mesmo em um projeto grande, não existe bicho de 7 cabeças (ok, algumas raras vezes existe). A página de pull requests do Rails é um bom lugar pra ver isso: https://github.com/rails/rails/pulls.

Eu sou completamente apaixonado por essa área e não consigo me ver fazendo outra coisa. O bacana é que você pode trabalhar com muitas coisas diferentes, como desenvolvimento web (backend ou frontend), desenvolvimento de jogos, desenvolvimento de apps para iOS / Android, robótica, IA, BI, entre outros – a lista é grande. Enfim, é uma área muito bacana :)

Claro: nem tudo são flores. Tem dia que enche o saco, tem dia que nada funciona e isso pode ser um pouco irritante. Mas nada que uma noite bem dormida e um bom café pra renovar e partir pro código novamente.

Minha dica final é: siga pessoas da área. Mas não se limite somente à blogs, veja também o que bons programadores (brasileiros e gringos) estão falando nas redes sociais, leia bons livros, participe de eventos da comunidade (exemplo: GuruSP), seja curioso (pergunte sempre) e não se limite somente ao que a faculdade pode te oferecer.

Durante o período de faculdade você tem basicamente 3 fontes de aprendizado: sozinho (auto-ditata), através de colegas e através das aulas (professores). Todas são importantes, mas nunca siga seu caminho utilizando apenas as aulas. Conseguir ler bons livros, criar uma boa base de conhecimento na área ou fazer boas amizades durante esse período é essencial. Além disso, colegas da faculdade são potenciais futuros colegas de emprego (podem te ajudar a conseguir um) ou ainda futuros sócios! :)

Coisas sobre Linux que me chamaram a atenção recentemente

LinuxVersions

Você pode não saber (ou esquecer às vezes), mas o Linux está muito presente na sua vida. Mesmo que você não o use diretamente como sistema operacional principal, mais da metade dos sites que você acessa está rodando em plataforma Linux. Isso inclui empresas gigantes como Google, Facebook, Twitter, Soundcloud, Amazon, Spotify, etc – a lista é muito, mas muito longa. A maioria dos filmes que você assiste utilizam Linux para renderizar cenas extremamente complexas que às vezes levam semanas ou mesmo meses para serem renderizados. O sistema móvel Android também é um Linux também caso você não saiba. E o seu roteador e a sua SmartTV provavelmente rodam Linux também!

Embora atualmente meu computador principal rode OS X, eu estou em contato com vários servidores que rodam Linux os quais acesso frequentemente. Além disso, utilizei Linux como S.O. principal de 2007 à 2011, através das distros Ubuntu e OpenSUSE (além de outras que utilizei por pouco tempo, como Slackware e Debian).

Na última semana várias coisas me chamaram a atenção no mundo Linux e esse é o motivo desse post:

1. O último episódio do podcast do Hack ‘n’ Cast (v0.3) foi uma introdução ao Linux e foi muito bom, vale a pena escutar: http://mindbending.org/pt/hack-n-cast-v03-introducao-ao-gnulinux.

2. Um amigo que é programador disse que nunca (palavra forte!) usaria Linux porque nem criar um script similar ao batch do “Janelas” ele conseguia. Bom, pensando que isso pudesse ser útil para mais pessoas, gravei um screencast ensinando como criar scripts no Linux e no Mac OS X: http://youtu.be/W84Ok6XGnow.

3. Assisti à uma ótima palestra chamada “Linux Sucks”: http://youtu.be/5pOxlazS3zs.

4. Lembrei e reli o excelente ponto de vista do Pothix sobre porque ele deixou o OS X e voltou a usar Linux: http://pothix.com/blog/development/menos-mac-e-mais-linux.

5. Pra finalizar (e descontraír), há um tempo atrás eu ganhei de um amigo que trabalha na RedHat um chapél vermelho (red hat, rá!), o qual foi parar na cabeca do Tux que eu tenho na minha estante, vide fotos abaixo. Ficou bem bacana! :-)

1

2

Bom, essa não é a primeira vez que eu escrevo sobre Linux e também não será a última. Linux é muito mais importante do que as pessoas pensam. Pense 3 vezes antes de subestimar o sistema do pinguim! ;)

Swift BR – grupo de discussão sobre a nova linguagem lançada pela Apple

swift-icon

A idéia desse grupo é fazer com que os usuários possam conhecer uns aos outros, compartilhando e discutindo idéias interessantes relacionadas à essa nova linguagem lançada pela Apple, para substituir o Objective C como linguagem padrão para desenvolvimento de aplicações tanto OS X quanto iOS.

https://groups.google.com/d/forum/swiftbr

Como aprender Ruby e Rails

ruby_rails

Vários amigos tem me perguntado como podem aprender a programar em Ruby e Rails. Vou postar aqui os mesmos vídeos e dicas que mandei pra eles, caso alguém tenha interesse também:

Por que eu voltei a usar iOS / iPhone

Em agosto desse ano, eu escrevi sobre como estava sendo minha experiência com o Android. Quatro meses depois, voltei a usar iOS. Vamos aos fatos: eu pretendia ficar mais um tempo com ele, mas o derrubei e a tela parou de funcionar completamente. Como eu já estava bastante ansioso pra voltar a usar o iOS / iPhone, aproveitei a oportunidade e comprei um iPhone 5s.

hero_start__posterframe

Mas o Android estava tão ruim assim?

Não.

Antes de mais nada, vou ser sincero: Android é sim um excelente sistema.

android

Conforme o que eu escrevi, eu tinha um Samsung S4 e o Android estava me atendendo perfeitamente bem no começo, mas depois de um tempo comecei a ter alguns problemas com a ROM original (da Samsung): lentidão, o fato de eu não poder atualizar, etc. Essa imagem que mostra bem claramente o problema das atualizações do Android:

03-ios-android

Antes que o Jonas me xingue, algo que deve ficar claro: não devemos resumir a experiência de usar Android somente se baseando na experiência de usar um Samsung. Mas o fato é que o Samsung S4 é um dos aparelhos mais utilizados atualmente, por isso achei que eu não fosse ter esse tipo de problema.

Resolvi então colocar uma versão pura do Android (vale ressaltar que essa ROM não era oficial). Ficou bom no começo, mas depois de um tempo, ficou pior: as apps davam crash toda hora e o sistema como um todo ficou lento. Tentei voltar para a ROM da Samsung (ou até alguma outra – exemplo: Cyanogenmod), mas era tanta gambiarra que desisti.

O que eu ganhei voltando para o iOS / iPhone

ios

  • Podcasts – uma app decente para o que mais faço com o meu celular: escutar podcasts. Não encontrei nenhuma app (free ou paga) que me atendesse 100% no Android. E isso o Podcasts da Apple faz muitíssimo bem;
  • iOS 7 – o novo sistema está muito estável e muito bonito.
    O que mais eu posso querer? ¯\_(ツ)_/¯
  • Gerenciamento de arquivos – Não tenho mais que me preocupar em que diretório os arquivos estão (e não saber se estou desperdiçando espaço);
  • Find my friends – as opções do Android não eram muito boas (Testei o “Life360” e alguns outros);
  • Calandários perfeitamente sincronizados – Várias items do meu calendário estavam no iCloud. Agora calendários do iCloud, do Google e do Facebook estão perfeitamente sincronizados;
  • Sensação de controle do que está realmente acontecendo no aparelho – Em vários momentos você tem a noção de perder esse controle no Android;
  • Fluidez – Somando o processador A7 (64 bits \o/) e a boa integração entre hardware e software, a fluidez / estabilidade do sistema como um todo ficam fantásticas;
  • Camera com suporte à 120fps (slow motion) – simplesmente sensacional;
  • Earpods – os novos fones são ótimos;
  • Touch ID – Sem muito o que falar, é sensacional também.

touchid_hero

Uma coisa interessante e que antes era exclusivo do Android é o relatório de consumo da banda 4G separado por app, o qual agora está disponível também no iOS 7.

4g_usage

O que eu perdi deixando o Android

  • Notificações – O LED, os mini-ícones perto do relógio e a sincronia perfeita com as apps – tudo isso somados fazem as notificações do Android serem melhores que as do iOS;
  • Relatório de consumo da bateria – Isso simplesmenete não existe no iOS;
  • Instalar apps via web – sinto falta disso, funciona muito bem no Android;
  • Teclado swipe – fiquei mal acostumado com esse teclado também. Mais um ponto pro Android.

Conclusão

ios_hero

Das principais opções atuais, iOS / iPhone é o que me atende melhor.

RHOK Brisbane 2013

“Random hacks of kindness” – ou simplesmente “RHOK” – que pode ser traduzido como “Hacks aleatórios de bondade” é um evento (aka. “hackathon”) sem fins lucrativos que acontece no mundo inteiro, onde profissionais de tecnologia ajudam a criar projetos e solucionar problemas de organizações que trabalham para um mundo melhor. Todos que participam não ganham nada, é uma contribuição como forma de boa ação.

Esse ano estou participando do evento de Brisbane (Austrália) e estamos ajudando a QueenslandKids, uma organização que ajuda crianças carentes e especiais.

Para saber mais sobre o evento: rhokbrisbane.org.

Fotos:

2013-12-07 09.41.32

2013-12-07 09.30.00

2013-12-07 09.35.53

2013-12-07 09.21.13

Há um mês, eu troquei o iOS pelo Android

android

Gostaria de começar esse post dizendo que vou tentar ser o mais imparcial possível, não sendo fanboy de nenhuma empresa / aparelho / sistema operacional. Eu não vou comparar somente os sistemas operacionais, mas sim a experiência do hardware com software, ou seja, a integração com o aparelho também.

Motivação

Eu parei de usar Windows quando o Vista foi lançado. Essa versão tinha muitos problemas e eu resolvi dar uma chance ao pinguim (aka. Linux), principalmente pelo fato de nunca ter usado ele full-time antes. Muitas coisas eram diferentes (hoje em dia essa diferença é menor), tive que aprender coisas novas e largar velhos costumes para trás. Mas depois de algum tempo, notei que valeu muito a pena e que eu não voltaria atrás. Alguns anos mais tarde, mudei novamente para o Mac OSX (o qual continuo usando até hoje) e vejo que essa experiência de ter usado os 3 sistemas diferentes só me trouxe benefícios.

Eu expliquei tudo isso para demonstrar que essa motivação foi basicamente a mesma com os sistemas operacionais móveis. Depois de quase 3 anos usando iOS e perto da versão 7 ser lançada, decidi que era hora de experimentar um outro mundo. E como eu nunca tinha usado Android full-time antes (apenas havia brincado com aparelhos de amigos), então era hora de mudar.

Hora de mudar

Decidi então comprar um Samsung Galaxy S4.

s4

Procurei pela versão com o Android puro (aka. “Google Play Edition”), mas como ela ainda não estava a venda aqui, comprei a versão com a rom da Samsung mas pouco tempo depois desisti e segui esse tutorial para instalar a rom pura do Google. A vantagem é que o sistema fica mais fluído (mais rápido, dá menos “travadas”) e não vem com vários aplicativos inúteis que a Samsung e a operadora do celular te obrigam a ter (uma vez que você não pode apagá-los).

O que eu gostei

1. Notificações + LED + atalhos rápidos

Vou começar com algo que eu uso muito em ambos os sistemas: notificações. Conheço pessoas que simplesmente não se importam muito com elas, mas esse definitivamente não é o meu caso. Esse é um ponto forte no Android: as notificações são muito boas. No iOS você pensa que isso funciona bem até ver como isso funciona no Android, principalmente porque as notificações e as aplicações são bem sincronizadas.

Para cada item você pode ter alguns botões de funções rápidas (exemplo: ao receber um email, você pode clicar nos botões “responder” ou “arquivar”) ou ainda pode ver mais detalhes sobre aquele item específico, tocando e deslizando o dedo para baixo naquele item. Outro exemplo legal é quando você tira um screenshot e recebe uma notificação, na qual você pode apenas tocar para já abrir a nova imagem.

Uma diferença muito boa são os ícones na barra superior, com um resumo das notificações:

2013-09-27 12.30.05

Outra coisa bem bacana é o “Pulse notification light”. Acredito que nem todo aparelho tenha isso, mas o S4 tem e faz muita diferença. Ao chegar uma nova notificação, ao invés de a tela ligar e mostrar o que chegou, você pode configurar seu aparelho para ele simplesmente piscar o LED. O mais legal é que você pode configurar o LED pra ficar de uma cor para cada tipo de notificação: chamada perdida, SMS, Email, Hangouts, Facebook, Twitter, WhatsApp, etc.

led

Algo bem últil e que agora o iOS 7 também tem (embora falte um atalho para o “Settings”) são os atalhos rápidos, que ficam na área de notificações:

notifications (atalhos)

2. Tela grande (5″) Full HD

Segundo a Apple, a vantagem de um aparelho um pouco menor é poder tocar todos os cantos da tela com a mesma mão que segura o aparelho. Sim, isso faz sentido, mas a vantagem de ter uma tela grande (5 polegadas) e com boa qualidade é ainda maior. E a adaptação é relativamente rápida.

3. Teclado swipe

Assunto polêmico: há quem ame, há que nem ligue. Apesar de eu não achar ele tão mais rápido assim, é mais prático e confortável digitar apenas deslizando o dedo. Mesmo você errando algumas letras, ele tem um algorítimo inteligente e corrige. Gostei muito!

swipe

4. Lookout

Uma app que faz toda a diferença: Lookout. Ele tem vários recursos: localizar seu celular (similar ao “Find my iPhone”), se alguém errar 3 vezes a senha de desbloqueio, ele tira uma foto da pessoa e manda no seu email (ele também faz isso quando sua bateria está quase acabando, só que usa o GPS pra saber sua localização e te manda essa informação também), faz backup de contatos, fotos, etc, é anti-virus. Ah, e sim, é free.

5. Botões “menu” e “voltar”

Antes eu achava besteira, mas usando diariamente você nota que os botões “menu” e “voltar” são bem práticos (principalmente o último). No S4 eles ficam melhor ainda, porque são dois sensores capacitivos, não botões físicos. E eles ficam apagados até que você toque neles, o que deixa o design do aparelho mais clean.

buttons

6. Customização, flexibilidade e liberdade

O Android é extremamente personalizável (às vezes mais do que deveria). Pra começar, a possibilidade de instalar launchers diferentes é sensacional. Launcher basicamente é a tela inicial do seu aparelho, o gerenciador de widgets, temas, etc. Estou usando o Apex e gostando muito.

É sempre bom poder customizar, embora minha tela inicial seja bem parecida com a default:

apex

Você também pode instalar gerenciadores de torrents, emuladores, terminal com acesso root (esse dá um pouco de trabalho, mas dá pra fazer), entre outras coisas. Isso é liberdade!

files

(Gerenciador de arquivos)

screen lock options

(Formas de desbloquear a tela)

utorrent

(uTorrent e emuladores são apps facilmente encontradas na Play Store)

7. Relatório de uso da bateria

No Android você pode configurar para receber notificações quando a bateria estiver totalmente carregada ou quando estiver acabando. Você também pode facilmente ver o que está consumindo mais bateria:

bateria

8. Relatório de uso do 3G / 4G

É possível ver quanto cada app está gastando na sua rede de dados 3G ou 4G. Essa funcionalidade é bastante flexível, permitindo configurar um limite de uso, configurar uma notificação quando você estiver perto de atingir limite, configurar em que dia a sua operadora vai recomeçar a contagem de uso e até mesmo ver quanto cada app gasta em “foreground” e em “background”, ou seja, quanto cada app usou enquanto você estava com ela aberta e quanto ela gastou enquanto ela estava fechada (usando “pull notifications”, por exemplo), respectivamente.

data_usage

9. Instalar apps remotamente

Você pode entrar no site do Google play (aka. App Store do Google) usando seu computador, buscar e escolher o aplicativo que quer instalar, selecionar o device no qual você quer instalar o app (no caso de você ter mais de um), clicar em “Instalar” e pronto. Depois de 3 segundos, o device começa a baixar e instalar a app sozinho. Muito útil.

instalar app remotamente

Depois, no device:

app instalada

10. Google Now

Ok, o Google mantém uma versão do Google Now pro iOS, mas é diferente. Digo isso porque no Android o Google Now é mais integrado e no geral funciona melhor.

google now

11. Quantidade de apps gratuitas

Até hoje, todas as apps que eu instalei foram gratuitas. Não vejo problema nenhum em pagar por apps, mas ao contrário do iOS, a maioria das apps não custam nada.

12. SD card

Não é algo imprescindivel, mas é interessante. Principalmente porque você configurar coisas como: todas as fotos e vídeo que você tirar podem ir automaticamente para o cartão SD e não para o armazenamento interno do aparelho.

13. Câmera

As duas câmeras (frontal e traseira) do S4 são muito boas. E o software nativo do Android também é bem bacana, contando com algumas opções avançadas na hora de tirar foto e modos interessantes, como fotos 360º e panorâmicas.

camera

14. Sistema inteligente

De vez em quando eu ainda me surpreendo com o Android. No geral, o sistema é muito inteligente e facilita algumas coisas. Um exemplo disso é: eu configurei meu device para subir todas as fotos que eu tiro automaticamente para minha conta do Dropbox. Mas quando ele nota que sua bateria está baixa, ele para de de fazer essas coisas para evitar que sua bateria acabe de vez.

sistema inteligente

15. Alguns detalhes interessantes

Para finalizar a lista de coisas que eu gostei, o Android é mais detalhista que o iOS:

  • Você pode configurar apps padrões: Chrome é meu navegador padrão, Gmail é meu cliente de email padrão e VLC é meu player de vídeo padrão, etc;
  • Exibição de detalhes de arquivos: extensão, tamanho, resolução de fotos, duração de vídeos, etc;
  • Exibição de quanto de memória cada app está usando de ram;
  • Exibição de quanto de memória cada app está usando de cache;
  • Gráfico de armazenamento interno / SD card: que tipo de arquivos está gastando mais espaço no seu device;
  • Etc.

apps manager

(Quanto cada app gasta de memória ram)

apps abertas

(Tela para visualizar e fechar apps que estão rodando)

app info

(Detalhes de um app específico)

storage

(Gráfico do armazenamento interno)

O que eu não gostei

1. Fluidez

Apesar de ter um hardware supostamente superior, o S4 perde no fator “fluidez” para o iPhone. Todas as animações, efeitos e o tempo de resposta dos iPhones são melhores na maioria dos casos. O pior de tudo é o rotação da tela: você vira o device e várias vezes a tela não vira junto. Aí você chacoalha um pouco e a tela vira. Isso chega a ser irritante às vezes.

2. Fones

Os fones que vem com o S4 são horríveis. Claro que isso é apenas a minha opnião. Acabei comprando um fone da Sony. A desvantagem é que você perde os controles de volume e play / pause que existem no fone que acompanha o S4. Pensei em comprar um da Apple, mas já os testei e tais controles também não funcionam.

3. Podcasts

Escutar podcasts no smartphone é uma das coisas que mais faço diariamente. Testei os 3 aplicativos mais famosos de podcasts no Android e nenhum é grande coisa. O único que é razoavelmente usável é o Podcast Addict. Ele tem dois problemas: o primeiro – não tão grave – é que ele oferece muitas opções e você tem que ver uma lista gigante de configurações para deixar do jeito que você gosta (convention over configuration – deveria ser o contrário). O segundo problema é pior: quando você está escutando um episódio, o áudio começa a falhar e às vezes para do nada. Isso é bem frequente, infelizmente.

4. Google Play – uma loja muito liberal

A Apple é burocrática e demora um pouco para autorizar a entrada de apps na sua loja. Mas isso tem o lado bom: raramente entram apps realmente ruins. Já na Google Play, tem muita porcaria, incluindo malwares. No geral não chega a ser um problema, mas você deve ser cuidadoso.

5. Updates

Como falei no começo do post, instalei uma rom com o Android puro e não estou usando a que a Samsung manda de fábrica. Isso significa que eu não posso simplesmente instalar as atualizações do Google quando elas saem. Pra ser sincero, eu não sei nem quando vou poder (não pesquisei como isso funciona). Mesmo se eu estivesse usando a rom da Samsung, ela demora (às vezes muito) pra liberar o update, como por exemplo agora que o Android 4.3 já foi lançado há mais de um mês e ainda não está disponível para quem usa a rom que já vem no device.

6. Apps no geral são mais feias e com UX mal pensado

Notem que estou generalizando. Já considerando as apps que eu mais uso, isso não chega a incomodar.

Coisas que não estão nas listas acima

Coisas que eu não comentei nas duas listas acima foi – ou porque são similares ao iOS / iPhone – ou não fazem diferença para mim.

Mitos

Alguns mitos sobre ambos os sistemas:

O Android não se integra tão bem com o Mac quanto o iPhone

Ok, essa integração pode não ser tão boa quando comparado com o iPhone, principalmente pelo fato de não ter iCloud, mas isso definitivamente foi um problema pequeno. Para tudo tem uma boa alternativa (sendo que maioria eu já usava). Nesse artigo, tem uma sessão chamada “Apple Lock-in?” que explica o que ele usa pra melhorar essa integração.

No Android, as apps fecham sozinhas frequentemente (crash)

Ouvi muita gente falando isso antes de eu começar a usar. Definitivamente não é verdade, é bem raro acontecer.

No iPhone / iOS você não tem liberdade

Ok, agora no Android você tem, inclusive tem acesso root ao sistema (que por baixo dos panos é um Linux). Grande coisa! O que você vai fazer agora? Basicamente nada demais :-)

Uma câmera com 90 megapixels é melhor que uma que tem 85

Obviamente é um mito. A câmera do novo iPhone 5S continua com os mesmos 8 megapixels do iPhone 5 mas é bem superior! E eu não acho que ela fica devendo pra nenhum smartphone que tenha 13 ou 20. Sério!

Conclusão

Já estou usando Android há pouco mais de um mês, o que foi suficiente para notar as vantagens e desvantagens. Gostei muito do iOS 7 (minha esposa tem um iPhone 5 e eu uso ele de vez em quando), mas por enquanto não pretendo voltar a usar iOS / iPhone; estou satisfeito com o meu Android.

Samsung-Galaxy-S4-vs-Apple-iPhone-5-01

(Galaxy S4 e iPhone 5)

Nesse post, eu basicamente listei o que gostei mais e menos em relação ao sistema operacional da Apple e no final das contas, ambos tem excelentes ecosistemas: conjunto de ferramentas, loja de aplicativos e design.

Então fica a dica: não tenha medo de experimentar o que você ainda não usou :-)

Atualização desse post

Em dezembro de 2013 eu voltei a usar iOS / iPhone e escrevi um post explicando o motivo:
“Por que eu voltei a usar iOS / iPhone”.

Iniciando uma vida completamente nova

australia

Estou iniciando uma novíssima fase em minha vida. Me mudei há 10 dias para Brisbane – Austrália, onde vou viver e trabalhar. Vim com minha esposa, a Aline, que topou o desafio de viver em um país completamente novo, com uma nova língua, nova cultura, novas pessoas e novos amigos (claro, sem nunca esquecer os grandes que fiz no Brasil).

Eu escrevi um post no meu recém-criado blog pessoal (para separar das coisas que posto aqui) agradecendo à algumas pessoas e postando algumas fotos daqui.

Conforme prometido ao @cassiuspacheco_, eu ainda farei um post mais completo que esse, mas vou esperar mais tempo pra ter mais coisas interessantes pra falar.

Apresentação online sobre as novidades do Rails 4

Screen Shot 2013-07-02 at 10.22.18 PM

O Rails 4 acabou de ser lançado e tem várias novidades bacanas! Aprenda o que mudou, o que são Strong Parameters, turbolinks, etags, requests com streaming e outras coisas interessantes.

Hoje fiz uma apresentação online pela Eventials e pela Locaweb sobre as novidades do Rails 4. Quem quiser assistir, a palestra está gravada e disponível no link abaixo:

https://www.eventials.com/pt-br/locaweb/o-que-ha-de-novo-no-rails-4-com-lucas-caton/

Seguem os slides:


Contar a frequência de objetos em um array usando Ruby

Uma dica rápida: às vezes precisamos contabilizar qual a frequência de objetos em um array usando Ruby.

Por exemplo, um array %w(dog dog cat) tem dois elementos “dog” e um “cat”. Para transformar isso em um hash, podemos fazer:

words = %w(dog dog cat)

Hash[words.group_by{ |w| w }.map { |w, words| [w, words.size] }]

O retorno disso seria:

{
    "dog" => 2,
    "cat" => 1
}

[#IF] Screencasts de Ruby on Rails para iniciantes

ruby_rails

Pra quem não entendeu o que é a hashtag #IF, veja esse post do Fabio Akita.

No ano passado, eu comecei a gravar alguns vídeos pra ajudar quem gostaria de começar a programar com Ruby on Rails.

Por enquanto são 3 screencasts apenas, mas já é o suficiente pra quem gostaria de começar.


Linguagem de programação “Ruby” (para iniciantes)



Ruby on Rails (para iniciantes)



Ruby on Rails – introdução às rotas


Por favor, me mandem feedback, com sugestões, críticas ou até mesmo dúvidas. Espero que gostem e que seja útil ;-)

15º Encontro Locaweb de Profissionais de Internet

Screen Shot 2013-05-08 at 10.12.49 PM

Ontem participei do 15º Encontro Locaweb em Curitiba-PR. O evento foi interessante e bem organizado e não estou dizendo isso só porque trabalho aqui :-)

Assisti as seguintes palestras:

  • Fábio Ricotta – “Usando SEO para alavancar suas visitas e negócios”
  • Diego Eis – “Guia de Sobrevivência”
  • Murilo Gun – “O segredo do fracasso”
  • Silvio Meira – “Empreendedorismo Digital”
  • Luli Radfahrer – “Internet das coisas, computação em nuvem e tendências 2013”

Todas foram boas, mas as apresentações do Ricotta, do Eis e do Luli me surpreenderam, foram muito boas mesmo!

Tiramos essa foto aí na hora do almoço, no Jardim Botânico. Da esquerda pra direita: Ítalo Oliveira, Diego Eis, eu, Bruno Batalha e Marcos Oliveira:

jardim botanico curitiba

Que venha o 16º encontro! :-)

Screencast #2 – Interessante plugin “vim-abolish”

Esse é o segundo screencast que eu faço para o blog e novamente é sobre Vim.
Esse ficou bem mais curto (tem apenas 5 minutos) e vai direto ao ponto. Espero que gostem!

Se quiserem ver o primeiro, o link é: http://blog.lucascaton.com.br/index.php/2011/12/13/screencast-1-17-dicas-para-o-vim/

Links relevantes:

Screencast:

(caso não consiga ver o vídeo, clique aqui)

Por favor, mandem feedback sobre o que acharam!

Projeto “MyPodcasts.info”

Eu sou um cara que gosta muito de escutar podcasts. Escuto vários, sobre variados temas, alguns em português, outros em inglês, alguns sobre áreas totalmente diferentes da que eu trabalho, alguns nostálgicos, alguns pra melhorar meu inglês, etc. E sempre que encontro com alguém e descubro que a pessoa também escuta podcasts, rola as perguntas sobre qual escuta, sobre o que se trata, quais amigos em comum escutam, qual o nível de qualidade, entre outras dúvidas. Foi aí que surgiu a idéia de criar o site MyPodcasts.info, um site onde você pode cadastrar tudo isso e no final ter uma URL publica para passar para os interessados nos podcasts que você escuta.

Há 2 meses atrás eu o coloquei no ar e logo em seguida o liberei como open-source: github.com/lucascaton/mypodcasts.info. Então, sintam-se a vontade para usar o site e contribuir com ele.

Seguem alguns screenshots:

Screen Shot 2013-04-21 at 6.38.43 PM

Screen Shot 2013-04-21 at 6.44.15 PM

Screen Shot 2013-04-21 at 6.44.50 PM

Ah sim! O site é (mais ou menos) responsivo:

Screen Shot 2013-04-21 at 6.48.11 PM

Tenha orgulho ou f…-se

(Esse post é uma tradução (autorizada) do artigo “Take pride or f— it” do Rob Heaton)


O arquivo vazio “sem_titulo.txt” brilhando no seu editor de código só pode significar uma coisa. É hora de criar uma nova funcionalidade.

A última funcionalidade que você desenvolveu começou muito bem, com uma arquitetura esculpida tão elegante e requintada que te fez chorar um pouco quando ninguém estava olhando. Mas as coisas mudaram e no final ficou um lixo. Você não estava particularmente orgulhoso de nada e agora está feliz apenas porque isso vai sair do seu caminho. “Mas tudo vai ser perfeito dessa vez!” você diz a si mesmo e mais uma vez ansiosamente começa a trabalhar. Um pouco mais tarde você olha ao redor e sua funcionalidade que já está meio pronta já está caindo aos pedaços, está em chamas. “Droga!” – você diz.

Eu passei por isso em muitas funcionalidades e projetos. Estou cansado disso e eu sei por que isso acontece. Eu escrevo codigo bom e crio um bom produto quando eu me sindo orgulhoso do que eu estou fazendo. Esse sentimento pode vir por vários motivos – uma equipe que valoriza bom código, clientes os quais estão desesperados para testar uma nova funcionalidade ou uma sensação de habilidade e crença que estou me divertindo fazendo algo bom. Idependente de de qual seja o motivo, se ele não existir, o que eu estou fazendo ficará bem ruim.

Quando eu perco o orgulho de alguma coisa, eu paro de me preocupar se isso ficará bom ou não. O único valor que isso terá para mim é não ter mais que mexer nisso um dia. Isso sempre começa quando estragamos um pequeno trecho do código, mas apenas isso já é o suficiente. A caixa de Pandora foi aberta e a sua nova funcionalidade está infectada. Eu estrago o próximo trecho de código com apenas um pouco de remorso e a partir desse ponto, eu não vou mais vou me importar com isso.

Porque eu sei que você tem que ENTREGAR, que os usuários não se importam como está o seu código, que essa funcionalidade é REALMENTE CHATA e eu só quero começar outra. Então não importa se meus models conhecem a lógica das minhas views, porque levaria 20 minutos que NÓS NÃO TEMOS para resolver isso. Estou fugindo das regras, mas é somente em um ou dois métodos.

Mas isso nunca acaba aí. Essa funcionalidade, ou talvez o produto inteiro, estejam contaminados. Não existe mais nada para se ter orgulho. Não existe nenhuma demonstração de habilidade. Não existe uma forma de fazer que os dados parseados pelo módulo que eu acabei de escrever fiquem legíveis, porque quem vai ler com certeza não entenderá de onde os dados vem. Eu já liberei os cães do inferno e cobri todo o meu código com bacon.

Perder o orgulho do que você faz te transforma em um zumbi, cujo objetivo é, além de ingerir cérebros, é terminar logo a nova funcionalidade. Isso vai acontecer, de qualquer forma. E exceto se você conseguir ter orgulho novamente, esse código não vai ficar bonito. Você tem que lembrar como isso era antes, no começo, há muito tempo atrás. Quando seus controllers eram pequenos e seus models não foram cobertos por ácidos e cacos de vidros. Pense bastante. Pense novamente.

Para minha redenção mortos-vivos, eu tenho que fazer as pazes com o que eu fiz ou então levantar e fazer uma pausa. Então, com a cabeça limpa e reabastecido com bom senso, eu tenho que decidir se quero fazer as coisas direito. Se eu não puder ou não fizer, então essa nova funcionalidade estará condenada e eu devo levar uma estaca até o seu coração e começar uma próxima coisa. Deixar o monstro a crescer e sofrer mutações não é uma opção.

Frequentemente eu sinto que estou gastando meu tempo fazendo coisas direito ou pelo menos de uma forma justificavelmente errada e isso é perdoável. Termine! Entregue! Mas um código ruim reduz a velocidade das coisas muito mais do que um bom código o faria. É muito fácil escrever alguma porcaria, ser forçado a escrever várias camadas de lixo em cima disso, gritar “espirito de LEAN STARTUP” para qualquer um que o questionar sobre o que você está fazendo. Você precisa de uma razão muito boa e imediata para escrever código ruim, ou seja, uma vaga sensação de pressão ou apatia não são suficientes.

Porque isso nunca acaba aí. E tão cedo quanto o T-virus seja produzido, você terá um apocalipse de código-zumbi em suas mãos.

Projeto “time_clock”

É comum na maioria das consultorias brasileiras de software, principalmente as que contratam funcionários através de regime PJ, solicitarem o relatório de horas trabalhadas mês a mês. Como esse era o meu caso no ano passado, eu criei um pequeno sistema para facilitar esse controle.

Eu havia criando essa funcionalidade dentro do próprio código do meu site, mas como várias pessoas gostaram e me pediram o código, eu extraí o código para um projeto a parte e o liberei como open-source.

Sinta-se à vontade para usar, melhorar e divulgar:
https://github.com/lucascaton/time_clock

Seguem alguns screenshots:
Screenshot browser
Screenshot iPhone

Ruby 2.0 lançado! O que há de novo?

ruby2

A versão 2.0 do Ruby foi lançada há dois dias.

Eu pensei em escrever um post listando e comentando cada uma das novas features, alterações, melhorias e incompatibilidades (quase nenhuma, felizmente) da linguagem. Mas acabei encontrando dois posts muito bons que fazem exatamente isso. O primeiro utilizando exemplos de códigos e o segundo são os slides do Urabe Shyouhe. Então, não deixe de ler:

http://blog.marc-andre.ca/2013/02/23/ruby-2-by-example/
https://speakerdeck.com/shyouhei/whats-new-in-ruby-2-dot-0

Vim Users BR

No mês passado, eu criei um grupo de discussões para usuários do editor Vim.

A idéia por trás da criação do grupo é que os usuários pudessem se envolver, compartilhar e discutir coisas interessantes relacionadas à esse fantástico editor. Comentar uma dica nova, um plugin interessante ou alguma técnica útil que pouca gente conheça, etc…

Segue o link do grupo:
https://groups.google.com/forum/?fromgroups=#!forum/vim-users-br