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.

Categorias
Citações

A correria existe desde sempre

Foi em Roma, há cerca de um ano, depois de um dia particularmente exaustivo, que conheci uma dessas tréguas […]. Não vou senão raramente à cidade, onde procuro cumprir, num só dia, o maior número possível de obrigações. O dia fora desagradavelmente sobrecarregado: uma sessão do Senado seguira-se de outra no tribunal e de uma discussão interminável com um dos magistrados das finanças, e, finalmente, de uma cerimônia religiosa impossível de ser abreviada, durante a qual a chuva caiu sem cessar. Eu próprio programara tantas atividades diferentes sem intervalos, deixando entre elas o menor espaço de tempo possível para as importunações e bajulações inúteis.

Marguerite Yourcenar, Memórias de Adriano

A cada vez que reclamar da correria, vou tentar me lembrar que imperadores romanos também tinham dias assim.

Categorias
Artigos

Uma boa manhã de trabalho

Chá verde, um paper meu para revisar e editar, minha esposa me vigiando = uma boa manhã de trabalho.

Categorias
Images

Iluminado no Todoist

Acho que vocês, leitores, compartilham da minha jornada em ser mais produtivo, pois é nesse blog que eu documento minha batalha para fazer melhor minhas tarefas.

Não que quantidade de tarefas seja algo significativo, mas com o tempo aprendi a filtrar o que coloco no Todoist como significativo para mim. Cada vez que eu completo uma tarefa, alguma coisa melhorou na minha vida.

Quem sabe isso me motiva a colocar mais tarefas relacionadas a este blog (incluindo meus truques para usar Todoist)…

Categorias
Images

Conservação do rio e cuidado com as margens

O Hobbit é tão fantasioso, tão fora da realidade, que inclui até grupos que brigam sobre a conservação dos recusos naturais.