Categorias
Artigos

Abrindo e fechando sempre os mesmos programas

Sempre que vou iniciar uma sessão de trabalho — em bom português, sentar para trabalhar — em algum projeto de programação ou escrita de um artigo, há uma série de ações repetitivas:

  1. Usando o terminal de comando, navego até a pasta do projeto em questão
  2. Obtenho a última versão do projeto no GitHub
  3. Abro os arquivos de LaTeX no Emacs e os programas em Python no Visual Studio Code
  4. Abro o Sourcetree, para gerenciar as modificações que eu vou fazendo
  5. Abro arquivos de referência (PDF de alguma documentação, por exemplo)

Ao longo da minha sessão, vou trabalhando, e periodicamente usando o supra-citado Sourcetree para registrar o que vou fazendo. Nesse período, invariavelmente meu celular está em modo Não perturbe e estou escutando a trilha sonora de algum filme, série ou jogo no Deezer.

Quando termino de trabalhar, por cansaço ou por ter de fazer outra atividade, também há série de atividades repetitivas:

  1. Fecho todos os arquivos abertos no começo
  2. Sincronizo minha versão atual do trabalho com a versão no GitHub.

Esse ciclo de abrir programas – trabalhar – fechar programas se repete algumas vezes ao longo de dia, de maneira que criei um sistema de automação dessas tarefas. Já falei aqui sobre como escrevi minha tese de maneira eficiente, onde automatizei algumas tarefas; o sistema que descrevo neste post é mais geral.

Um aviso: este post é bastante técnico e requer o uso do terminal de comando, em particular o sistema Git for Windows, que instala a shell Bash e muitos utiliários como programas nativos do Windows; para macOS e Linux, Bash e aplicativos de terminal já estão instalados. Se você se interesse por computação científica e quer aprender mais, existem muitos tutoriais disponíveis sobre como usar e configurar Bash, o meu canal preferido no YouTube para esse assunto é o do Corey Schafer. Os exemplos que vão mostrar aqui se aplicam a Windows, e minha configuração está disponível no GitHub.

Mesmo que o leitor não esteja familiarizado com nada disso, pode ler para tentar entender como eu automatizo algumas tarefas e ter ideias para facilitar a sua vida.

A base do meu sistema é um pequeno utilitário Bash chamado prm, que permite definir “procedimentos” de “começar” e “parar” um projeto.

Vamos a um exemplo prático. No momento estou trabalhando em um paper sobre perfis magnéticos para refrigeradores magnéticos. Após instalar prm usando as instruções do repositório, crio um projeto no terminal usando:

prm add pprof

pprof é uma abreviação de “paper profiles” (é assim que meu cérebro funciona). Esse comando cria dois scripts, em uma pasta padrão do prm (que pode ser mudada) abre-os no editor de texto padrão.

O primeiro script,start.sh, define o que é feito ao começar a trabalhar no projeto:

cd $HOME/latex-writing/paper-magnetic-profiles/
# sync repo
git pull origin master
# open Visual Studio Code to edit and run scripts
code -n .
# Sourcetree is a Git client
SourceTree.exe
# we can also open reference files
start Outline_Paper_Profiles.pdf
# I prefer to use emacs for LaTeX files
emacs PaperMagneticProfiles_JBSMSE.tex
view raw start.sh hosted with ❤ by GitHub

O segundo script, stop.sh, é executado quando termino de trabalhar no projeto:

# Sincroniza de volta mudanças feitas
git push origin
# ver explicações abaixo para esses comandos
cf PaperMagneticProfiles_JBSMSE.tex
closew "paper-magnetic-profiles - Visual Studio Code"
closew "Sourcetree"
closew "Outline_Paper_Profiles"
view raw stop.sh hosted with ❤ by GitHub

No script acima, cf é uma função que fecha um arquivo no Emacs, que está definida em ~/.bash_profile.

# function to close the buffer corresponding to a given file in emacs
# cf = close file
function cf() {
emacs -e "(if (get-buffer \"$1\") (kill-buffer \"$1\"))"
}

e closew é um comando que fecha janelas usando AutoHotKey:

; This script closes the window name passed as argument, e.g.
; AutoHotkey.exe closewindow.ahk "Visual Studio Code"
; To match strings anywhere in the window title
SetTitleMatchMode 2
If (WinExist(A_Args[1]))
WinClose

que é definido como um atalho na forma (dentro de .bash_profile).

alias closew="AutoHotkey path/to/closewindow.ahk"

Como toda automação, apesar de exigir um pouco de trabalho, estes hacks facilitam muito o trabalho e deixam minha mente livre para se concentrar no que é necessário. Por exemplo, quando quero começar a trabalhar no paper, abro uma janela do Git Bash e digito:

prm start pprof

e tudo fica pronto na minha frente. Mais importante que a abertura dos programas, no entendo, é o recado ao meu cérebro, quando digito o comando acima, de que é hora de começar a trabalhar no paper.

Quando é hora de parar, digito

prm stop pprof

e tudo se fecha, deixando meu computador pronto para outras tarefas.

Publicidade
Categorias
Artigos

Como edito minha Tese de Doutorado de maneira eficiente

Em Fator de Enriquecimento, Paulo Vieira fala que um dos segredos para a riqueza é dedicar uma hora por dia, seis dias por semana, ao estudo, ao aprimoramento do seu trabalho. Com o tempo, isso leva a um grande desenvolvimento de suas habilidades, até um ponto em que você pode trocá-las por melhores salários.

Apesar de ter muitas ressalvas em relação a esse livro, essa ideia é seu o melhor ensinamento, e tenho tentado ficar mais atento a como melhorar minhas atividades. As teorias de sistemas enxutos (lean) também se baseiam no conceito de Kaizen: se algo está errado, precisa ser imediatamente consertado — a melhoria contínua.

Para melhorar meus processos de trabalho, o primeiro passo é simplesmente ficar mais atento a eles; esse post é uma maneira de documentar meu processo para editar minha Tese de Doutorado, junto com indicações de melhorias de processo. Enfatizo o verbo editar, e não apenas escrever, porque o que vou descrever aqui se aplica a essa situação específica: eu já tenho um manuscrito completo, tenho arquivos de referência com alterações dos meus orientadores, e preciso então mudar algumas frases e imagens da minha Tese.

O primeiro passo, aparentemente trivial, é sentar na minha mesa, com uma versão impressa e corrigida da Tese ao lado. Gosto de sentar de maneira bem confortável, com um caderno para anotações sempre por perto.

20181128_101209880_iOS

Como todo pesquisador que se preze, eu escrevo meus documentos científicos em \LaTeX, que já cobri aqui algumas vezes. O meu editor de texto preferido para \LaTeX é o Emacs, um programa bastante arcaico e bastante poderoso — mais sobre ele em um minuto. Para visualizar o PDF compilado, no macOS a melhor opção para integração com Emacs é o Skim. Para tornar esse início de processo o mais consistente e eficiente possível, eu criei um fluxo de trabalho no Alfred que, com um comando, executa os seguintes passos:

  1. Abre um terminal de comando
  2. Muda o diretório atual para a pasta com a minha Tese
  3. Baixa a versão mais recente do repositório da minha Tese no GitHub
  4. Abre o Emacs no arquivo .tex em que estou trabalhando, a abre o Skim do lado:

Screen Shot 2018-11-28 at 08.33.48

(Sim, claro que estou usando Palatino).

O principal recurso que me interessa no Skim é que posso manter o PDF aberto no Skim de um lado da tela, trabalhar no Emacs de outro, e ao re-compilar o documento o PDF é automaticamente atualizado:

A razão de, com tantos editores mais “modernos” disponíveis, eu ainda continuar usando o Emacs é que, especialmente com o pacote AUCTeX, esse programa sinceramente faz um pouco de mágica. Veja no video a seguir como, quando eu quero inserir uma referência, com um comando eu posso procurar por palavras chaves e o Emacs me mostra as opções lindamente formatadas:

Quanto a minha configuração do Emacs, ela está no GitHub para os aventureiros; se for do desejo dos leitores, posso falar mais sobre esse editor aqui no blog (deixem comentários!). Um detalhe que quero abordar é em relação ao tema de cores, já que ter um ambiente confortável para se trabalhar faz parte da melhoria contínua. Depois de muito tempo usando temas de fundo escuro, nas últimas semanas estou muito satisfeito com o Leuven, que tem essas cores bem interessantes (a minha parte preferida é a barra azulzinha embaixo). E para todas as coisas que envolvem programação, a minha fonte preferida é a DejaVu Sans Mono.

Screen Shot 2018-11-28 at 10.15.20

E o leitor, que achou do meu processo? Tem alguma dúvida? Deixem nos comentários!