CURRICULUM VITAE Dados pessoais: Nome completo: Eduardo Nahum Ochs Data de nascimento: 7 de fevereiro de 1971 Nacionalidade: brasileira Sexo: masculino Estado civil: solteiro Identidade: 04844873-2 IFP-RJ CPF: 021441927/40 Telefone: (21)2540-9757 (21)2540-9870 E-mail: edrx@mat.puc-rio.br Home page: http://angg.twu.net/ Endereço: R. Jardim Botânico 622/103B - Jardim Botânico Rio de Janeiro, RJ, Brasil CEP 22461-000 Formação: Doutorado em Matemática Aplicada pela PUC-Rio, concluído em agosto de 2003; o doutorado incluiu uma estadia-sanduíche de oito meses - de janeiro a agosto de 2002 - na universidade McGill, em Montreal (Candá). Mestrado em Matemática Aplicada pela PUC-Rio, concluído em abril de 1999. Bacharelado em Matemática pela Pontifícia Universidade Católica do Rio de Janeiro (``PUC-Rio´´), concluído em agosto de 1996. Do 2º ano do 1º grau até o 3º ano do 2º grau no Instituto Metodista Bennett, Flamengo, Rio de Janeiro. Línguas estrangeiras: Fluente em Inglês. Ótima compreensão de Francês e Espanhol falados e escritos. Experiência didática: Professor substituto da UERJ/FEBF (Duque de Caxias/RJ) durante o primeiro e o segundo semestres de 2004. Cursos ministrados (todos para turmas de graduação): No primeiro semestre (abril a agosto de 2004): - Fundamentos da Computação (para Licenciatura em Matemática) - Geometria Analítica (idem) - Estatística aplicada à Pesquisa Educacional (para Pedagogia) No segundo semestre (setembro a dezembro de 2004): - Fundamentos da Matemática (para Pedagogia) - Tendências Atuais do Ensino de Ciências (para o curso de Formação de Professores do Ensino Fundamental) Outros cursos ministrados: Minicurso de 12 horas sobre programação na linguagem Lua - no evento "HackerUnion 2", organizado pela GNU Solutions, setembro de 2004. Local: Faculdades ESEEI, Curitiba. Apresentações e publicações: ``Debian e Software Livre'' - Apresentação no "Dia D", evento organizado pelo grupo Debian-RJ, em 21 de agosto de 2004. ``O que é o esqueleto de uma demonstração?´´ - Tese de Doutorado, agosto de 2003. Apresentações feitas durante a bolsa-sanduíche, todas com o título ``A System of Natural Deduction for Categories´´: ? No encontro ``CMS Summer Meeting 2002´´, em 17 de junho de 2002. ? No encontro ``FMCS 2002´´, em 8 de junho de 2002. ? No seminário de Lógica da Universidade de Ottawa, em fevereiro de 2002. ? No seminário de Categorias da Universidade McGill, em janeiro de 2002. ``A system of natural deduction for categories´´ - apresentado no encontro ``Natural Deduction Rio 2001´´, ocorrido entre 2 e 6 de julho de 2001 na PUC-Rio. `` `SetC is a topos' has a syntactical proof´´ - apresentação no seminário de Lógica e Categorias do Centro de Lógica e Epistemologia da UNICAMP, em 25 de abril de 2001. ``Análise não-standard com filtros´´ - apresentação no Encontro de Lógica da UFF, em 24 de fevereiro de 2000. ``Categorias, filtros e infinitesimais naturais´´ - Tese de Mestrado, abril de 1999. Experiência com computadores: Fluente nas seguintes linguagens de programação: Emacs Lisp, Lua, Tcl/Tk/Expect, Icon, C, shell scripts (Bash/Zsh), AWK, TeX e LaTeX. Ótimo conhecimento das seguintes linguagens, sistemas, protocolos e ferramentas: HTML básico, Debian, makefiles, TeXinfo, Forth, GDB, CGIs. Conhecimentos razoáveis de PHP e Perl. Noções de Python, SmallTalk, SQL e PostScript. Autor do pacote `eev´ para o editor de texto Emacs; o Emacs é um dos dois editores de texto considerados principais em sistemas *NIX. Uma resenha sobre o eev foi publicada no número 13 da revista eletrônica ``Brave Gnu World´´, em 1999. Alguma experiência com MS-DOS e Microsoft Windows. Usuário de GNU/Linux desde 1994. Trabalhos como programador profissional: De junho/1998 a janeiro/1999: programação de CGIs em Perl. Empresa: Bowne Internet, Rio de Janeiro. De setembro/2000 a novembro/2000: programação de CGIs em PHP. Empresa: Canvas Webhouse, Rio de Janeiro. De dezembro/2004 ao presente: programação de uma jukebox em Linux (sistema embarcado, controlado por apenas 6 botões). Cliente particular, Rio de Janeiro. Principais projetos de Software Livre: - Eev - "uma ferramenta para automatizar quase tudo", implementada como uma extensão em Emacs Lisp para o editor de texto GNU Emacs, com ferramentas auxiliares escritas em Tcl/Expect, Shell e Awk. Uma resenha sobre o eev foi publicada no número 13 da revista eletrônica "Brave GNU World", em 1999. Atualmente (janeiro de 2005) o eev está no meio do processo para se tornar um projeto oficial da GNU; ele já foi aceito pela GNU e os detalhes legais já foram resolvidos, mas ainda faltam algumas padronizações e o aceite final. Links principais: http://angg.twu.net/eev-current/README.html http://angg.twu.net/eev-current/ (Observação: a página na internet é quase toda em Inglês, mas há um resumo em português do eev na próxima página). - Várias mini-linguagens para geração de diagramas para serem incluídos em textos matemáticos escritos em LaTeX. Os programas que interpretam estas linguagens de diagramas e geram código LaTeX tiveram várias implementações, em várias linguagens diferentes: em Icon (1997/98), em Icon e Tcl/Tk (1998-2002), e em Lua (2003-). - Uma mini-linguagem para geração de código HTML, escrita em Tcl. Todo o código em HTML da minha página na internet - http://angg.twu.net/ - é gerado usando esta linguagem, e isto desde 1999. Este programa está sendo modernizado e reescrito em Lua, mas a versão em Lua ainda não está funcional. - Uma mini-distribuição de Debian voltada para pessoas que querem entender como o sistema funciona e fazer as próprias mini-distribuições. Este projeto está em andamento: o sistema já gera um CD que é ao mesmo tempo um "livecd" e um CD de instalação, e ambos funcionam - mas seria de se esperar que a partir de um sistema instalado por este CD seria possível produzir uma versão modificada do próprio CD, e por enquanto o sistema sempre acaba precisando de pacotes extras que ainda não estão sendo incluídos no CD. Observação: os scripts deste projeto que já estão funcionais estão sendo distribuídas junto com o eev, como exemplos de "e-scripts" (veja a descrição do eev). Uma descrição mais detalhada do projeto eev O eev é uma biblioteca para o Emacs que faz com que o Emacs suporte "e-scripts". E-scripts são arquivos de "anotações executáveis" sobre como fazer determinadas tarefas no computador. Um e-script é tipicamente um arquivo de texto no qual alguns pedacos estão em "linguagens humanas", como Português ou Inglês, e outros pedaços são trechos de código em várias linguagens de computador, ou sequências de comandos para vários programas. Vários programas interativos - por exemplo shells e certas linguagens de programação - mantêm um histórico dos ultimos comandos recebidos, e permitem que o usuário edite estes comandos e os execute de novo, com ou sem alterações; às vezes estes programas até contêm pequenos editores de texto embutidos. A idéia do eev é não nos restringirmos somente a estas ferramentas simplificadas de edição de comandos - que ainda por cima são diferentes de programa a programa. Com o eev o Emacs passa a poder ser utilizado como um "editor universal de comandos" - os e-scripts são como se fossem históricos globais de comandos dados para o sistema, mas podendo ser editados como arquivos de texto comuns, podendo conter todo tipo de comentário e de hiperlink, e podendo conter comandos para vários programas e linguagens. Não existe nenhum modo de executar um e-script inteiro de uma vez só. Ao invés disso existem modos de selecionar e executar trechos de um e-script interativamente: o usuário seleciona a parte a executar (pode ser a linha em que o cursor está, a "região" selecionada pelo Emacs, ou tudo ao redor do cursor até a primeira ocorrência para a frente e para trás de certos delimitadores, etc) e aí pede que esse trecho seja interpretado como código Lisp e executado imediatemente pelo Emacs, ou que o trecho seja gravado num script temporário que depois vai ser lido por um shell, ou que seja mandado imediatamente para um programa interativo com o Emacs estabeleceu um canal de comunicação, etc. Os "hiperlinks" em e-scripts são simplesmente blocos executáveis, em geral ocupando uma linha só ou parte de uma linha, que quando são executados tem uma ação correspondente à de seguir um hiperlink. Um exemplo: # (find-node "(make)Automatic" "$^") quando o Emacs executa essa expressão entre parênteses (essa expressão e' um comando em Emacs Lisp) ele abre a página intitulada "Automatic" do manual do GNU Make e leva o cursor para logo depois da primeira ocorrência do string "$^" no texto. Repare que este tipo de hiperlink pode aparecer no meio de blocos de código pra praticamente qualquer programa ou linguagem - já que quase todos os programas num sistema *NIX aceita "comentários". Por exemplo, em shell scripts todas as linhas começadas com "#" são tratadas como comentários e ignoradas.