Back to computing

Muito longo; não li (ml; nl ou tl;dr tupiniquim): post pessoal sobre meu trajeto na computação e aprovação no programa Outreachy.


J√° sigo um tempo sem postar por aqui nem no dicas e toda semana fico pensando “putz, precisava voltar com o blog, preciso mandar email pro dicas”… mas sento no computador, enrolo, entro em mil vortexes pela internet e quando percebo j√° est√° tarde e n√£o tenho mais tempo.

Soa familiar? Infelizmente esse √© um problema muito comum e n√£o existe segredo – pelo menos n√£o descobri ainda, se souber deixa nos coment√°rios, por favor… √Č muito dif√≠cil achar motiva√ß√£o e foco, principalmente quando a gente j√° trabalha tanto e quer ficar fazendo nada nas horas vagas. J√° li muitos conselhos, posts, livros sobre o assunto e sempre chego √† conclus√£o que a solu√ß√£o mesmo √© parar de pensar sobre fazer ou n√£o ou quando come√ßar e sentar a bunda na cadeira e come√ßar o que voc√™ quer/tem que fazer. A gente costuma gastar muito tempo se dando desculpas do porqu√™ n√£o come√ßar ao inv√©s de gastar esse tempo fazendo o que tem que ser feito.

Hoje voltei por ter uma novidade muito especial! Pra quem me acompanha desde o início do blog e para os meus amigos próximos, sabem que eu não sou desenvolvedora, embora trabalhe com desenvolvimento de sites desde 2008. Sempre fui mais designer, porém há uns 2~3 anos minha vontade de voltar a estudar computação (fiz curso técnico) tem aumentado. Do ano passado pra cá tive que me virar muito com a plataforma que usamos na Mupi, startup da qual sou co-fundadora, e  por isso considero que subi alguns níveis na área. De todo modo, continuo com muitas lacunas teóricas e ainda não consigo me definir como desenvolvedora. Ok, tem um pouco de síndrome de impostora nisso, mas eu chego lá.

Em mar√ßo deste ano, decidi aplicar novamente para o programa Outreachy que tem o intuito de inserir mulheres na comunidade de software livre – eu j√° havia aplicado uma vez em 2013 e n√£o tinha conseguido. Fiquei sabendo que as inscri√ß√Ķes estavam abertas faltando 1 semana para encerrar (obrigada M√īnica por ter me avisado <3) e corri pra me inscrever, j√° que o processo consiste em preencher a ficha de inscri√ß√£o e contribuir com um patch pro projeto que eu queria entrar, ou seja, toma um certo tempo. Passada a correria, stress e tempo livre trabalhando nisso, quem entrou num projeto da Mozilla? Yo! Olha o meu nominho ali.

Ser aprovada no Outreachy tem sido muito importante para eu perceber minha capacidade e comprovar que toda conquista é precedida de muito esforço e dedicação, mas é possível! E essa tem sido minha motivação para desprocrastinar.

Para as meninas que queiram prestar nas próximas turmas, o processo que segui foi:

  • Fu√ßar no site do Outreachy projetos que fossem do meu interesse (eu me interessei por uns 4, mas √© bom focar em 1 porque n√£o h√° tempo para tentar todos).
  • Entrar no canal IRC do projeto escolhido.
  • Conversar com os mentores sobre poss√≠veis bugs e patches para enviar e por onde come√ßar.
  • Configurar o ambiente de desenvolvimento local para trabalhar nos bugs -> eu tentei trabalhar em dois projetos e essa √© a parte mais dif√≠cil e demorada, pois requer muito tempo para entender como o projeto funciona, instalar todos os requisitos do projeto e faz√™-lo rodar como deveria na sua m√°quina.
  • Subir o patch do bug resolvido. -> aqui √© importante ter um pouco de familiaridade com git, se voc√™ n√£o tem, sugiro come√ßar agora, d√° uma olhada nesse curso gratuito do Willian Justen. Recomendo super!

Para vocês veram o tipo de patch que é pedido, eu enviei 2 pull requests  (esse e esse) e mandei um pequeno fix para um outro projeto da Mozilla.

Todas as pessoas com quem conversei da Mozilla foram super receptivas e atenciosas, então não tenha medo de fazer perguntas, nenhuma pergunta é idiota. Mas claro, recomendo você sempre tentar resolver as coisas antes e fazer as perguntas à medida em que ficar bloqueada e não o contrário, perguntar antes de tentar.

Bem, próximos passos: dia 23/05 começa o programa e aí que meu trabalho começa de fato. Pretendo continuar compartilhando meu processo e aprendizado por aqui, quem sabe não ajuda mais pessoas a se movimentarem e a deixarem de procrastinar um pouco? Além de incentivar mais meninas a virarem desenvolvedoras e se aventurarem no mundo do software livre.

Preciso modificar um commit passado, como faz?

Nas √ļltimas duas semanas tenho tido um intensiv√£o de aprendizado de git¬†por causa da reformula√ß√£o do site da Escola Mupi. O projeto usa como base uma plataforma que se chama Timtec, mas que ainda est√° sendo desenvolvida, logo muitos bugs, features faltando e muitos¬†merge conflicts… Eu que ainda estou descobrindo as magias do git, tenho uma relacionamento de amor e √≥dio, pois j√° fiz muita besteira e perdi muitas horas de trabalho por n√£o saber como ele funciona direito, assim como ele j√° me salvou muitas vezes <3

Esses dias, precisei adicionar alguns arquivos num commit antigo para manter minha árvore organizada e coerente. Para isso, @padovan me ensinou a resolver esse problema usando fixup + rebase interactive [que eu particularmente achei incrível]. Vamos lá:

Antes de iniciar, você precisa copiar um pedaço inicial do hash do commit que você deseja modificar. O hash é o código de identificação do commit, exemplo: 636bf2643e67bf34f67691333b916e292571a469. No caso os 6 primeiros caracteres já são suficientes. Você pode achar o hash com o comando git log.

Tendo isso copiado, deve-se fazer um “fake” commit. Ou seja, criamos um commit que servir√° apenas como um reposit√≥rio tempor√°rio das novas modifica√ß√Ķes que ser√£o acrescentadas ao commit desejado. Para isso usamos o seguinte comando:

$ git commit --fixup=636bf26

Isso cria um commit com a mensagem “fixup! + msg do commit selecionado”. Isso ajuda a identificar que esse n√£o √© um commit convencional, mas que precisa ser “fixed up”. Feito isso, agora vem a magia: git rebase --interactive ou git rebase -i. O rebase interactive d√° muito mais flexibilidade para modificar os commits. Para us√°-lo precisamos indicar a quantidade de √ļltimos commits a serem mostrados a partir do HEAD. No meu caso, os 4 √ļltimos commits foram suficientes:

$ git rebase -i HEAD~4

que nos d√° no editor padr√£o do terminal a quantidade indicada de commits em ordem do mais antigo ao mais novo, assim como todas as op√ß√Ķes do rebase interactive. Nesse exemplo s√≥ vamos utilizar fixup (note que existem outras op√ß√Ķes pra rebase interativo que podem ser muito √ļteis em outras situa√ß√Ķes):

Para a magia acontecer, é preciso escrever f no lugar de pick na frente do commit de fixup e modificar a ordem dos commits, colocando-o logo abaixo do commit desejado:

Agora √© s√≥ salvar e voi l√°! o “fake” commit √© fundido no commit de cima =) √© s√≥ dar um checada se deu tudo certo com git log.

UPDATE: Como pode se ver na primeira imagem, existem outras op√ß√Ķes bem interessantes para se usar no rebase interativo, como o reword, que permite modificar apenas a mensagem de algum commit, e o squash que permite juntar dois ou mais commits em um s√≥. Para quem l√™ em ingl√™s, sugiro este artigo do github a respeito e dou um quote de alerta (tradu√ß√£o livre minha): “√Č considerada uma m√° pr√°tica dar rebase em commits que j√° foram submetidos ao reposit√≥rio remoto. Ao fazer isso, voc√™ poder√° invocar a ira dos deuses do git”.

obs.: Para modificar o √ļltimo commit feito, git commit --amend¬†√© a melhor op√ß√£o, j√° que “reabre” o √ļltimo commit para edi√ß√£o.

Learn how to code Javascript by playing a game!

CodeCombat is a web based game that teaches you how to code with Javascript by playing it and so far, the more I get to know it the more I like it! 

The game has a 2D RPG skin with cute characters and runs directly in the browser. At the beginning it is a bit hard to get used to its UX and for those who are anxious, sorry to tell, but you will have to read the instructions. But when you start to get how it works it gets more fun and without noticing you are learning how to code and hacking the code they give you in order to pass the levels faster.

The better part of Codecombat I just found out yesterday: the team who built it has open-sourced everything! I have even talked with the team and they are super accessible, they have provided a few aways of doing that.

There are a bunch of ways to get involved with the game and helping spread code education out there. So, if you are looking for a free and open-source software to contribute, you should consider this one.