sábado, 21 de janeiro de 2012

O Bom, o Mau e o Feio

Depois de 8 horas de dojo (com uma hora de almoço no meio), é o momento de avaliar o que deu certo e o que deu errado.

Um ponto positivo: fui obrigado a interromper as pessoas ao final do dia, para liberar a sala. Sinal de que algo deu certo! :-)

Mas houve pontos negativos também. O coffee break da manhã sobrou tanto que ainda alimentou o pessoal à tarde -- cancelei o que seria feito à tarde após consultar os participantes -- e ainda jogamos muita comida fora (além de encher minha geladeira com um bom estoque de pão de queijo). Será porque não foi anunciado e o pessoal não se "preparou"? Sinceramente, não costumo ver coffee break sobrar desse jeito não.

A internet estava horrível. Culpa da GVT, ou o link não é aquilo que foi prometido? Não sei, mas no final do dia o pessoal estava usando Internet através do meu celular, e perdemos pelo menos uma hora do dia por conta disso. Culpa minha também: poderia e deveria ter feito download antecipado de tudo aquilo que os participantes poderiam precisar. Os participantes foram unânimes em sugerir que a inscrição contenha instruções de pré-instalação, mas continuo reticente a respeito.

Muito tempo foi gasto em "aula", quando o objetivo era que as pessoas fizessem as coisas. Bem, elas passaram um bom tempo fazendo instalação -- instalação do typesafe stack, instalação do sbt, instalação de plugins do sbt, instalação do plugin do Eclipse, instalação do Play, etc. Mas muito tempo foi gasto mostrando wiki de ferramentas e bibliotecas ou descrevendo o scaladoc -- informações importantes, mas secundárias.

Gostei de ver o pessoal usando o SBT -- outro que recebeu um tempo desproporcional -- mesmo, aqueles que usam IDEs. O pessoal quis brincar com o bicho. Vejo que tenho que melhorar a didática sobre o mesmo, para reduzir o tempo de exposição sem reduzir o conteúdo.

Pouco foi feito de fato no tempo disponível, mas o pessoal conseguiu colocar coisas para rodar -- mesmo que pequenas e simples -- usando o conhecimento passado sobre linguagem, ferramentas e documentação. Gente lendo scaladoc da biblioteca de Scala e outras! Ponto positivo para o instalador do typesafe, que instalou localmente a documentação! :-)

As principais sugestões foram mover parte do conteúdo para o início do dia, reduzir o tempo de alguns conteúdos, e deixar outros para a hora dos exercícios, além de passar as instruções de softwares a serem instalados durante a inscrição.

De minha parte, preciso de um site separado da inscrição com os dados da realização, e preciso incluir no formulário pergunta sobre ambiente de desenvolvimento preferido (OS, IDE, editor), e tipo de aplicação que costuma desenvolver (web, gui, scripting, baixo nível).

O dia foi cansativo, mas já estou com vontade de realizar o próximo. :-)

sexta-feira, 20 de janeiro de 2012

Dojo de Scala em Brasília (21/01/2012)

O dojo de Scala do dia 21/01/2012 encerrou as inscrições por terem acabado as vagas. Se for bem sucedido, repetirei a experiência nos próximos meses. Se você estava tentando se inscrever a acabou ficando de fora, acompanhe este blog que anunciarei qualquer novo dojo aqui.

Até lá, porque você não se subscreve na lista de brasília de linguagens funcionais (lfbsb@googlegroups.com), ou na lista brasileira de Scala (scala-br@googlegroups.com)?

terça-feira, 30 de agosto de 2011

Escolhendo sistema operacional default com o Grub 2

Vou falar um pouco a respeito de um problema que eu tive com o grub.

Grub é o gerenciador de boot preferencial do Linux, e é instalado por default pelo Ubuntu, entre outros. Meu desktop em casa tem Ubuntu e Windows instalados, e o Windows é o sistema operacional default, de forma que minha esposa não tem que fazer nada para bootar o Windows.

Configurar o sistema operacional default não foi particularmente fácil. Existem montes de informação na internet sobre como escolher o sistema operacional default, a maior parte das quais se refere à versão anterior do grub. Sobre a nova versão, não muita coisa.

No fim das contas eu usei o Startup Manager do Ubuntu para configurar isso. A propósito, alguém poderia me explicar porque você usa o Startup Manager para escolher que OS você vai bootar, e o Bootup Manager para escolher que processos vão ser iniciados? Bem, voltando ao assunto...

Isso funcionou legal até o dia que eu fiz um upgrade do Ubuntu, quando então uma nova entrada foi criada, o que trocou a posição relativa do Windows no boot. Isso foi desagradável, então resolvi me aprofundar no assunto.

A configuração usada pelo Ubuntu durante o boot está em /boot/grub, em particular /boot/grub/grub.cfg. Mas você não deve editar esse arquivo diretamente -- ele é gerado automaticamente a partir dos scripts localizados em /etc/grub, mais a configuração em /etc/default/grub. Normalmente, é esse último arquivo que você deve alterar.

Para trocar o sistema operacional default você deve editar o arquivo /etc/default/grub, alterar o parâmetro GRUB_DEFAULT, e então rodar update-grub. O Startup Manager faz tudo isso para você, mas há uma coisa que o Startup Manager não faz...

O truque é o seguinte. O parâmetro GRUB_DEFAULT é normalmente configurado como um número, indicando a posição relativa do sistema que você quer bootar no menu, mas ele também pode ser configurado como um nome! Para ver o nome dos sistemas no menu você pode executar "grep menuentry /boot/grub/grub.cfg" -- os nomes são as strings entre apóstrofos ou aspas logo após "menuentry". Por exemplo:


$ grep menuentry /boot/grub/grub.cfg
menuentry 'Ubuntu, with Linux 2.6.38-11-generic' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 2.6.38-11-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 2.6.38-10-generic' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 2.6.38-10-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 2.6.38-8-generic' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry 'Ubuntu, with Linux 2.6.38-8-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os {
menuentry "Memory test (memtest86+)" {
menuentry "Memory test (memtest86+, serial console 115200)" {

Isso também mostra porque o Startup Manager usa posição relativa ao invés de um nome: de forma que a última versão do Linux seja sempre a default. Para mim isso parece uma escolha ruim para qualquer coisa exceto a primeira entrada.

De qualquer forma, tudo que você precisa fazer é editar /etc/default/grub, alterar a configuração GRUB_DEFAULT, de forma que ela indique o sistema operacional default de sua escolha, e então rodar update-grub.

sábado, 11 de dezembro de 2010

Blog do Capó

Pois é, resolvi fazer um blog em português. Os temas não serão muito diferentes daqueles que eu já abordo em Algorithmically Challenged, mas também não serão simples cópias. De quebra, talvez eu fale de temas não relacionados à informática por aqui.

Em todo caso, iniciarei com posts sobre uma ferramenta de gerenciamento de configuração de servidores chamada Puppet. Minha abordagem será bem diferente daquela que eu achei pela internet quando eu próprio estava aprendendo a respeito -- por aí o pessoal parece querer mostrar como é fácil colocar um servidor funcionando, mas não ajudam em nada a aprender a usar.

Também vou colocar alguns posts sobre a linguagem Scala. Vou tentar escrever posts para iniciante, e vai ser interessante comparar com meu conteúdo em inglês. Aqueles posts foram escritos enquanto eu aprendia, enquanto estes serão escritos do ponto de vista de alguém com ampla experiência. Vamos ver no que dá.