Lond's Stuff
Meus 1001 dias
Feb 25th
Quando comecei com essa idéia de 101 coisas em 1001 dias eu comecei por um único motivo, eu nunca tinha feito uma bucket list, ou lista de resoluções de fim de ano, ou coisa que o valha. E achei o período bem interessante, pouco menos de três anos, dava pra colocar coisas a curto e médio prazo.
E foi assim, com essa idéia que eu comecei a lista. Com coisas que estava pra fazer há tempos e deveria fazer em algum momento próximo, com coisas que eu achava que seriam bons guias nos anos seguintes, com coisas que eu gostaria de fazer mais, esse tipo de coisa.
Tirar da inércia, esse era o ponto da lista. Sabe, eu costumo me dar bem com compromissos públicos, então uma lista era um incentivo a mais para fazer essas coisas, porque eu tinha me comprometido a tentar fazer aquelas coisas.
Bom, talvez eu tenha errado em alguns pontos da minha lista, mas no fim, eu acho que ela valeu a pena e vou fazer uma versão dois nos próximos dias. Então vamos a avaliação:
O que eu fiz de errado?
O meu primeiro erro foi colocar muitos “Comprar”. Sabe, foram quase 20 coisas pra comprar e o problema disso é que certas coisas estavam completamente fora do meu orçamento (Como o #64, a Loft Bed), outras acabaram se tornando desnecessárias ou próximo disso (hoje em dia não sei se realmente preciso de um relógio. Estou sempre com meu celular a mão). Na próxima lista vou deixar essa parte de comprar pra minha wishlist.
O meu segundo erro foi o de não acompanhar a lista mais de perto, como vocês vão ver no resumão das tarefas, que eu vou postar depois, teve tarefas que eu completei mas nunca coloquei aqui, nem risquei.
Uma outra coisa foram tarefas que, embora mensuráveis, eram meio esquisitas de medir, como a #11. Cara, eu não vou ficar contando quantas pessoas eu abracei, e acho que dei um pouco de bobeira de colocar coisas nesse estilo, embora a intenção fosse boa.
Uma tarefa que eu escolhi particularmente mal foi a #29. Eu não achava que a mania do fotolog fosse morrer, como morreu, e também não achava que o mirror que eu hospedava aqui fosse sofrer o ataque de spams no comentário que sofreu. Mesmo assim, eu comecei a fazer um script pra fazer um backup do fotolog, vou manter num xml, com as imagens na mesma pasta, pra importar pra alguma coisa no futuro, quem sabe. Vou ver se faço algo semelhante pro Photoblog. Mas não vai dar tempo de fazer tudo em 10h, de modo que vai ficar sem completar :)
O que eu fiz certo?
Eu acho que uma boa coisa da lista, como já disse, é a ajuda pra planejar o curto-médio prazo, então as tarefas que envolviam coisas que eu tinha que fazer mas que acabavam sendo chutadas sempre mais pra frente foram uma boa.
Tarefas como a #14 e a #15 me fizeram continuar na seletiva mesmo com preguiça porque eu queria completar as metas. Porque um problema que eu tenho é de deixar coisas pra lá porque elas me dão trabalho nas minhas horas vagas. No fim das contas eu vi que não era minha praia, mas não teria visto se não tivesse ficado até o fim, certo!?
Tarefas como a #93 me fizeram sair mais de casa, a #69 e a #70 me fizeram retomar a leitura, coisa que de tempos em tempos acaba ficando meio esquecida por causa da faculdade.
Acho que o mais certo, no fim, foi fazer a bendita lista. Sabe, esse negócio de resoluções de fim de ano é um pouco de bullshit, sim, mas se você se comprometer, ele te dá uma direção pra seguir. E como essa lista é um pouco maior, um pouco mais a médio prazo, você tem tempo de colocar coisas importantes de verdade. Coisas como terminar a faculdade, por exemplo. Ou terminar o seu mestrado, ou começar aquele seu curso de linguas que você sabe que não vai dar pra começar esse ano, mas que você quer começar antes que seja tarde demais.
Eu recomendo pra todo mundo uma lista dessas. Mesmo que seja só pra você avaliar quais são as próximas 101 coisas que você quer fazer, e depois você esqueça a lista.
Mas acho que foi uma experiência importante, e eu vou repetir :)
#15 – Fazer 100 problemas do Valladolid
Feb 24th
Pois é, completei esse no fim do segundo tempo, hein :)
Amanhã é o último dia pra fazer quaisquer metas e depois de meia noite eu vou postar uma avaliação de toda essa história de 100 em 1001. Mas por enquanto, vou explicar um pouco sobre essa aqui..
Pra quem não sabe, na verdade essa meta era fazer 100 problemas do Juiz Online da Universidade de Valladolid. Como alguns devem saber, eu participei de seletivas da maratona (que não é propriamente uma maratona :) de programação e um dos jeitos de treinar pra maratona é praticando fazendo programas no Juiz online. Logo, fazer os 100 problemas era um jeito de me incentivar a treinar.
Funcionou até certo ponto, mas eu poderia ter feito o triplo de problemas se tivesse me dedicado de verdade, mas acho que acabei descobrindo que não era muito a minha praia :)
#69 – Ler pelo menos 3 livros de autores brasileiros
Feb 18th
Pois é, completei essa e passei batido.
Demorei pra conseguir ler os três livros, tinha lido dois e não saía disso, mas no fim, li :)
Fiquei então com:
- Purgatório – A verdadeira história de Dante e Beatriz, Mario Prata
- O Xangô de Baker Street, Jô Soares
- Assassinatos na Academia Brasileira de Letras, também do Jô soares.
Bem da verdade, depois disso eu também li Os Sete do André Vianco, então, foi até de três autores diferentes :)
#47 – Comprar um Wii
Feb 18th
Na época que comecei a lista do 101 coisas em 1001 dias, comprar um Wii era provavelmente meu maior sonho de consumo. O Wii tinha saído há pouquíssimo tempo e a idéia de controle por movimento e tudo o mais me conquistou de primeira.
Depois que peguei um DS, meu desejo de ter um Wii só aumentou. Até porque cheguei a ouvir muita gente que tem gostos parecidos com o meu em relação a jogos torcer o nariz quando ouviu que eu tinha comprado um DS só porque “só tinha jogo de criança”, o que não é verdade. E eu imaginei que o mesmo se daria com o Wii.
Ainda não pude aproveitar muito o console. Tô aproveitando esse iníciozinho pra jogar as coisas mais famosas, e mais comuns: joguei um tempinho de Wii Sports, tô dividindo um save de Mario Galaxy com a namorada, jogando Punch-out e jogando, mesmo que não seja uma versão tão boa quanto dizem que é a de X360, Dead Rising.
Ainda falta jogar muita coisa: Metroid Prime, Zelda (tanto o de Gamecube quanto o de Wii), entre outros.
Já fiquei feliz de achar um media player pro Wii aparentemente melhor que o player de PS2. Tô usando o Geexbox, enquanto o suporte a legendas srt não vem pro mplayerWii.
Depois tenho que dar uma boa olhada no homebrew. Tenho que pegar um adaptador de controle de PS2 pra GC, ou um classic controller com adaptador pra GC. Pra poder jogar as coisas do GC e os jogos clássicos.
Mas até agora, tô gostando bastante. E não acho que vou me decepcionar :)
A utilidade do Google Wave?
Feb 3rd
Uma das coisas mais discutidas, depois que o hype passou, é pra que diabos serve o Wave?
Afinal, quem já tem email não tem muita necessidade de trocar por algo que é mais lento e aparentemente tem as mesmas features, provavelmente implementadas pior, ao menos por enquanto.
E eu tenho que concordar que não tinha visto nenhuma utilidade naquela bagaça, até que semana passada eu precisei fazer um Brainstorm sobre um jeito novo de fazer uma das tarefas do laboratório que eu ajudo a gerenciar.
Como a idéia era fazer um brainstorm, eu queria que todos participassem, e o problema de usar email pra isso, é que vez por outra as pessoas esquecem de dar “reply to all” e aí a parada não funciona como deveria.
Não valia a pena criar um grupo de discussão só pra isso, já que seria só um tópico e acabou.
E aí eu abri meu wave, incluí as pessoas que queria que estivessem no brainstorm, e comecei a escrever.
Acho que finalmente achei a serventia, e por isso estou escrevendo: Usem o Wave pra situações onde pessoas possam ser incluídas depois. No caso do brainstorm, alguém podia lembrar de algum amigo que conheça bastante do assunto sendo falado e incluir para que ele pudesse falar sobre o assunto também.
Se fosse por email, teria o inconveniente de ter que repassar toda a thread original para a pessoa, além de ter que dar um jeito de incluir em todos os emails enviados dali em diante (as pessoas poderiam dar reply num email antigo da discussão, antes de ele entrar)
Ou seja, acredito que o Wave seja bom para duas situações: Brainstorms e organizações de eventos. Nesses dois casos incluir mais gente é uma possibilidade (“Hey, vou convidar fulano, tô incluindo ele no email”) e acho que no Wave isso é mais natural.
E vocês, quais serventia vocês acharam pro Wave?
A computação e os ternos
Jan 20th
Durante um bom tempo fui contra a “automatização” da computação. Achava que isso ia causar uma sucatização massiva. Achava que se o cara pudesse gerar código automaticamente, tudo ia acabar descambando pro código automático porco que não ia servir pra muita coisa. E andei até conversando com várias pessoas sobre o assunto.
E depois de conversar sobre o assunto, cheguei a conclusão de que estamos passando pela evolução que passaram os alfaiates. No princípio, tudo era feito a mão. Os alfaiates faziam as roupas, cobravam o quanto queriam por elas, pois não eram tantos os que eram mestres na profissão. E com o tempo, surgiu a indústria de roupas, o barateamento das roupas, e os alfaites, ainda existentes, caíram basicamente em desuso.
Exceto talvez pelos ternos. Já ouvi muita gente falando que terno que não é ajustado pessoalmente pra você é basicamente inútil. Não é confortável, não cai bem, etc etc.
Não uso ternos, mas já ouvi mais de uma pessoa falando isso. Fora que ternos são peças de roupas bem específicas e bem caras, também.
Por isso o paralelo, acho que com o passar do tempo a computação evoluirá para algo no molde da alfaiataria: O comum será usar fábricas de software. Software barato, rápido, que serve pro que você precisa. E só quem precisar de algo específico – só quem precisar de um terno – irá recorrer ao software feito a mão. Não completamente a mão, claro. Hoje em dia mesmo quem faz software específico não escova mais bits. O compilador ajuda muito nessas horas. Mas hoje em dia acredito que mesmo os alfaiates tem mais evolução do que tinham há anos atrás.
Eu nem sei o que a maioria das pessoas considera software específico. Eu mesmo não sei se sei. Há um tempo atrás qualquer coisa que usasse uma camada de abstração em cima do banco pra mim já começava a ficar bizarro, porque já tinha visto várias consultas desnecessariamente grandes sendo geradas pra coisas bobas. Mas hoje em dia não sei qual é o “state of the art”, então não sei se tenho como dizer como está esse nível.
Ainda acho que automatização demais faz mal. Só gerar um UML e mandar ele gerar o software pra você não vai fazer o melhor software do mundo. Mas talvez ele esteja na medida certa pra 90% das pessoas. E o princípio de pareto ainda é o mais importante. Melhor fazer 20% do esforço e resolver 80% dos problemas.
C# e o problema dos Grids
Jan 14th
Bom, eu não sou exatamente um expert em C#, mas uso no dia-a-dia no trabalho, e ultimamente uma coisa vem me incomodando bastante na sua definição.
Primeiro, vamos deixar claro, uso .net v2.0. Ou seja, não sei se o problema foi corrigido nas versões posteriores, mas pelo que vi, não o foi.
Quando criamos um DataGrid em C#, para exibirmos dados no DataGrid precisamos especificar um DataGridTableStyle, que é o define que tipo de dado será exibido naquele DataGrid, qual será o nome de cada coluna, a ordem das colunas, etc.
Pois bem, temos então algo nesse estilo:
DataGridTableStyle estilo = new DataGridTableStyle();
estilo.MappingName = typeof(List).Name;
DataGridTextBoxColumn coluna = new DataGridTextBoxColumn();
coluna.MappingName = “Campo”;
coluna.HeaderText = “Meu Campo”;
estilo.GridColumnStyles.Add(coluna);dataGrid1.TableStyles.Clear();
dataGrid1.TableStyles.Add(estilo);
Agora olhe bem pra esse código. Você a vê a linha que define coluna.MappingName? Pois é. Ele define uma string com o nome do campo. Sim, uma string hard-coded no seu código.
“Ah, mas qual o mal nisso?”, você pode perguntar. Como é sabido, o Visual Studio tem uma ferramenta de refactor razoavelmente eficiente. Que deixa que você modifique o nome de um campo para melhorar o seu código em poucos passos. No entanto, com o nome no campo assim numa string, isso passa a não ser mais tão útil assim, pois você tem que ir lendo todas as ocorrências da string para ver se elas são mesmas relativas ao campo que você está modificando. Se você esquecer de alguma, você terá problemas no seu programa.
Um outra caso é que em refactors algumas vezes você muda a estrutura do seu programa e aí você não pode ter certeza se o campo que você quer apagar realmente não é referenciado pois não é possível encontrá-lo sem que você busque pela string e vá vendo ponto-a-ponto.
Não é o pior problema do universo, no entanto, vai de encontro a toda facilidade de refactor estabelecida no Visual Studio.
Eu procurei e não encontrei solução para isso, e fiquei bem decepcionado. Tive que usar de truques pra encontrar essas coisas no código, como declarar uma variável temporária do mesmo tipo da Classe usada na Lista para poder usar o refactor.
Vocês conhecem uma solução melhor?





