quarta-feira, 29 de dezembro de 2010

Social Network: a nova seção do blog

Visando uma maior interação entre os leitores do blog e também proporcionar um canal direto de contato entre o blog e os leitores, resolvi criar a uma nova seção que denominei "Social Network". Tudo bem, poderia estar em português né?! Poderia, mas acho a sonoridade em inglês bem mais interessante. =)

Pois bem, essa nova seção encontra-se na barra lateral direita do blog, logo abaixo da nuvem de Temas de postagens. Utilizei de gadgets do Google Friend Connect API para oferecer essa pequena rede social para os leitores. Nesse local todos poderão comentar a respeito de diversos temas, fazer sugestões de novidades para o blog, realizar críticas, elogios, responder a comentários anteriores e disponibilizarem links e vídeos relevantes as leituras realizadas. 

Para postar nessa rede social é necessário primeiramente segui-la, sendo que para isso basta ter apenas uma conta do Google (Gmail) ou Twitter por exemplo, coisa que todos os leitores do blog devem ter (acredito que sim!).

Não é bem uma novidade a utilização desses gadgets do Google em blogs para criação de pequenas redes sociais, pelo contrário, é algo que esta sendo cada vez mais normal. Espero alcançar no mr. BIN o mesmo sucesso que outros blogs estão tendo ao utilizarem esses recursos. Aproveitem!

Seção Social Network mr. BIN

Meu Ambiente de Trabalho em 7 Itens

Dando continuidade ao meme (entenda o que é meme aqui) postado pelo amigo @welingtonveiga, estou fazendo essa postagem para tentar de forma rápida e resumida descrever meu ambiente de desenvolvimento. Confesso que em alguns pontos devo estar um pouco desatualizado pois neste ano que se passou acabei me dedicando a atividades menos técnicas, embora tenha paixão por programar.

Após a essa breve explicação, vamos lá tentar descrever meu ambiente de trabalho em apenas 7 itens.

1. Sistema Operacional
  • Windows 7: Embora ele realmente não seja necessário para o ambiente de desenvolvimento, visto a forma rápida como o Ubuntu, por exemplo, evoluiu, ainda não consegui abandonar o Windows do meu ambiente de desenvolvimento. Acho que o principal fator para isso se chama COMODISMO... =). Brincadeiras a parte, após o fiasco que foi o Windows Vista, embora não seja um defensor do tio Bill, temos que reconhecer a evolução que o Windows 7 representou em relação ao seu antecessor.
  • Ubuntu: Meu primeiro contato com ambiente Linux foi com sétima versão do Conectiva já a alguns anos. Não me lembro exatamente, mas com certeza eu ainda não estava na faculdade. A partir dai me tornei um curioso da plataforma e após conhecer o Ubuntu, ainda na versão 7.04, não abandonei mais. 

Devido a ter tanto um ambiente linux, quanto um ambiente windows devidamente configurados para programar, acabo utilizando os dois, sendo meu humor o fator determinante para definir em que ambiente irei trabalhar em um projeto.

Durante esse semestre tive que fazer alguns testes com a iOS SDK (Ambiente de desenvolvimento para iPhone) para a disciplina de Computação Móvel no mestrado, entretanto esse ambiente só é compatível com o Mac OSX. Sendo assim utilizei o VirtualBox para virtualizar o Mac OSX em PC e assim fazer um "hackintosh". Foi uma experiência muito interessante, embora eu não tenha evoluído muito no desenvolvimento para esse tipo de plataforma devido sua curva de aprendizagem ser bem íngreme e o tempo que eu tinha para o desenvolvimento do trabalho nessa plataforma ser bem curto(acabei optando por desenvolver um web app...). 
  
2. IDE - Ambiente de Desenvolvimento Integrado
Uso Eclipse para programar com quase todas linguagens que utilizo, principalmente Java e PHP. Embora haja corajosos que ainda ousem a questionar a real utilidade de uma IDE, para mim, além de proporcionar um ganho considerável de tempo, me auxilia bastante no constante aprendizado das linguagens (afinal de contas não da pra saber tudo!).
     
3. Browser 
Atualmente adotei o Google Chrome de vez como meu browser padrão. Fui usuário do Firefox desde 2004, quando ele lançou sua primeira versão e já a mais ou menos um ano vinha lutando para migrar dele para o Chrome e não conseguia devido a algumas extensões que me prendiam ao Firefox, como por exemplo o FireFTP. Entretanto já a uns 4 meses minha paciência com o alto consumo de memória do Firefox acabou e migrei para o Chrome de vez, adicionando assim mais um aplicativo Google aos tantos outros que eu já utilizava.
    
4. Modelagem
  • DBDesigner 4: Embora o software já tenha sido descontinuado e a equipe de desenvolvimento esteja trabalhando atualmente no MySQL Workbench, ainda sou usuário do DBDesigner 4, uma excelente ferramenta de modelagem de banco de dados que gera a DDL a partir do diagrama entidade relacionamento construído nela pelos usuários. 
  • StarUML:  A pouco tempo passei a utilizar principalmente o StarUML para documentar meus projetos. Ela é uma excelente ferramenta livre com suporte a UML 2.0, controle de versão, etc. Por muito tempo utilizei o Rational Rose para tal função (versão pirata que ainda não pertencia à IBM).
    
5. Ferramenta para Banco de Dados
Nesse tópico não há muito o que falar. Quando trabalho com o MySQL, impreterivelmente utilizo o PHPMyAdmin para fazer a gestão do banco de dados. Utilizo essa ferramenta por julga-la poderosa e simples ao mesmo tempo. Fico tanto tempo o com Browser aberto que pra mim torna-se bem prático utiliza-la. 

Andei utilizando o Oracle em um projeto meses atrás e pude comprovar que a ferramenta baseada em Browser fornecida por ele para fazer sua gestão também é bem interessante, mesmo sendo uma versão Lite.
     
6. Multimídia
  • iTunes: Durante o trabalho é muito natural colocar uma musiquinha para relaxar e fazer as idéias fluírem melhor. Já a um bom tempo adotei o iTunes como meu player padrão. Tive a paciência de organizar bem meus mp3 utilizando os ricos recursos que essa ferramenta da Apple oferece e agora fica fácil escutar músicas de estilos compatíveis ao humor do dia. Em ambiente Linux uso bastante o Rhythmbox para essa finalidade, afinal de contas ele é o "genérico" do iTunes.
  • Photoshop: Toda aplicação com visual agradável tende a chamar mais atenção dos usuários, pelo menos no primeiro momento. Pensando nisso prezo muito pelas interfaces das aplicações web que desenvolvo. Para tal, me aventuro bastante com edição de imagem, sendo que para isso utilizo principalmente o Photoshop. Por um bom tempo utilizei o Paint Shop Pro, ferramenta hoje pertencente a Corel.
7. Extras ( Aplicações em nuvem )
Cada vez mais me torno adepto de aplicações em nuvens devido a portabilidade e possibilidade de trabalhos colaborativos oferecidos por elas. Acho que não seria interessante citar e explicar todas aqui pois a postagem já está ficando bastante extensa, porém vou listar as principais que utilizo e linkar:
Caso alguém tiver alguma dúvida sobre elas, sugestão, crítica ou afins...comente por ai.

quinta-feira, 23 de dezembro de 2010

Discussão: Como escrever bons artigos científicos

Para dar uma quebrada no ritmo de postagens sobre discussões científicas e evitar que o conteúdo do blog ficasse massante, resolvi fazer a postagem da semana passada sobre o filme "The Social Network", entretanto optei retomar rapidamente às discussões dado o sucesso que elas estão tendo a nível de acesso e procura.

Para essa postagem iremos discutir um tema importante para TODAS as áreas: Como escrever e estruturar bem artigos científicos. 

Embora algumas pessoas da área de computação nem dêem a devida importância para desenvolver suas habilidades de escrita por julgarem não ser tão importante, após a leitura do resumo ficará claro que esse é um pensamento errado e que deve ser combatido.

obs: Essa será a última postagem que vou realizar antes do Natal, portanto desde já desejo um feliz natal repleto de muita fartura e alegrias a todos os leitores.

- Ilustração do post: Alexandre Araújo - Estúdio Chanceler



Universidade Federal de Viçosa
Departamento de Informática
Mestrado em Ciência da Computação
INF 600 - Técnicas de Pesquisa em Ciência da Computação
Resumo nº. 04

Os artigos estudados referem-se a maneiras de escrever melhores artigos em um âmbito geral e também especificamente no campo da ciência da computação.

Geralmente boa parte dos estudantes e profissionais da área de computação não têm muita afinidade com a escrita. Muito desse mau costume deve-se a falta de prática da escrita ou mesmo pelo desinteresse em escrever bons textos. Desde a graduação, muitos alunos de computação deixam de dar valor a qualidade dos textos que produzem por julgarem ser desnecessário ter tal habilidade bem desenvolvida para exercerem seus futuros cargos como profissionais de computação. Essa visão é completamente errada, pois é pura ilusão achar que o profissional de computação passará todo seu tempo sentado ao computador apenas programando. Profissionais de computação atuam em atividades que requerem habilidades de comunicação e conseqüentemente escrita, como levantamento e descrição de requisitos, elaboração de projetos, documentação clara de software, elaboração de manual do usuário, atas de reuniões e etc. Sendo assim, dependendo do cargo exercido pelo profissional de computação, pode ser que ele passe muito mais tempo executando atividades que envolvem a escrita do que programando por exemplo.

Nesse sentido, fica claro que além de habilidades computacionais, é muito importante também ter habilidades em escrita para um profissional de computação ser bem sucedido em sua carreira corporativa.

No artigo [3], os autores relataram um projeto voltado para quebrar essa barreira que alunos ainda não graduação costumam ter de que é desnecessário ter habilidades em escrita para ser um bom profissional em computação e a partir do uso de taxonomias de escrita e conselhos gerais, passaram preparar melhor os alunos no que diz respeito a escrita para ensino, comunicação acadêmica e profissional. Várias atividades de escrita foram destinadas aos alunos, sendo que estas utilizavam um modelo estrutural de redação pré-estabelecido que juntamente com o apoio do Centro de escrita da Universidade, permitiu que os alunos se concentrassem principalmente em aprendizagem e análise, em vez de organização e conteúdo.

Para alunos de mestrado e doutorado, escrever bem tem uma importância ainda maior. Dentre os vários critérios utilizados para avaliação de planos de pós-graduação no Brasil, 50% está envolvido diretamente com a produção científica do mesmo. Sendo assim, quanto mais publicações em revistas e conferências de alto nível um plano tiver, maiores serão suas chances de ser avaliado com notas altas e conseqüentemente ter acesso a uma quantidade de recursos financeiros maiores. Quanto mais recursos têm um plano de pós-graduação, mais ele pode investir no seu pessoal e equipamentos, que logo tendem a resultar em pesquisas melhores.

Somente bons artigos submetidos a veículos de alto nível conseguem ser publicados, e para melhorar a qualidade dos artigos escritos, várias dicas foram apresentadas nas leituras realizadas. De maneira geral, os artigos escritos devem ser claros e objetivos, possuírem uma boa revisão bibliográfica de trabalhos relacionados, apresentarem o problema que propõem solucionar, a relevância de tal problema e de forma bem fundamentada apresentar suas reais contribuições para solucionar o problema proposto, assim como o que difere tal contribuição das já realizadas em trabalhos anteriores.

Um método interessante para escrever artigos foi apresentado em [1]. Chamado de método de escrita por Scripts, esse método basicamente divide o processo de criação de um artigo em quatro etapas, sendo que após a realização de cada uma delas, o texto fica cada vez mais detalhado e refinado, estando praticamente pronto após a realização da ultima etapa. Na primeira etapa desse método é criado o chamado Outline, que é basicamente a estrutura do artigo proposto, ficando definidas assim as seções e subseções que compõe o mesmo. Na segunda etapa é feito o chamado Script 1, onde em cada seção e subseção definida no Outline, são enumerados pontos chaves que serão detalhados na terceira etapa do método. Esses pontos são frases curtas e claras. Na terceira etapa é feito o Script 2, que nada mais é do que o detalhamento dos pontos estabelecidos da etapa anterior, colocando uma marcação entre chaves ao final de cada um deles. A quarta e última etapa basicamente é composta pela retirada das marcações feitas no Script 2 e nas adaptações para dar sentido ao texto final.

Todas essas questões que relatei até o momento são voltadas para aspectos técnicos de um artigo de qualidade, porém alguns aspectos não-técnicos também necessitam de atenção para evitar que bons artigos sejam rejeitados após submissão. Alguns aspectos não-técnicos que valem ressaltar são:

  • Verificar se o artigo obedece à formatação exigida pela revista/conferência no qual será submetido;
  • Verificar se a revista/conferência para a qual o artigo será submetido é apropriada;
  • Usar sempre vocabulário formal;
  • Certificar-se de que todas as figuras e tabelas do artigo estão legíveis;
  • Cuidar para que o texto esteja claro;

Cada avaliador pode utilizar de critérios pessoais para avaliar um artigo submetido, porém de formas gerais, os aspectos técnicos e não técnicos que citei são sempre levados em consideração. Depois de realizada as avaliações, sempre os avaliadores fazem considerações que são muito valiosas para uma melhor adequação do artigo proposto, portanto essas considerações merecem muita atenção por parte dos autores.

Após a leitura dos artigos ficou claro que escrever bem é tão importante para o profissional de computação quanto pra profissionais de outras áreas. Independente da escolha pelo meio acadêmico ou corporativo, sempre os profissionais de computação serão exigidos com relação a suas habilidades de escrita e a falta de tais habilidades poderá influenciar negativamente em suas carreiras.

Referências

[1] BRAGANHOLO, V., HEUSER, C., REIS, A. (2004) “Redigindo artigos de Ciência da Computação: uma visão geral para alunos de mestrado e doutorado”, In: WTDBD - Workshop de Teses e Dissertações em Banco de Dados, Brasília, Brasil

[2] Mary Shaw, "Writing Good Software Engineering Research Papers," Software Engineering, International Conference on, p. 726, 25th International Conference on Software Engineering (ICSE'03), 2003

[3] Dugan, R. F. and Polanski, V. G. 2006. Writing for computer science: a taxonomy of writing tasks and general advice. J. Comput. Small Coll. 21, 6 (Jun. 2006), 191-203.

[4] R. Levin and D. D. Redell. An evaluation of the ninth sosp submissions or how (and how not) to write a good systems paper. Operating Systems Review, 17(3):35--40, July 1983.

quarta-feira, 15 de dezembro de 2010

E a mesma história se repete...

Essa semana tive a oportunidade de assistir ao filme "The Social Network", ou "A Rede Social", que refere-se a história da criação do Facebook.

Confesso que tive uma surpresa agradável com o filme, pois geralmente sou meio oposto as críticas e como li algumas elogiando-o muito antes de assistir, imaginei que não seria tão bom. Alguns críticos já estão inclusive classificando o filme como um clássico do cinema contemporâneo, não sei se é pra tanto, mas de fato é um excelente filme.

Para quem ainda por ventura não ouviu falar sobre o filme (de que planeta você é?), ele está em cartaz nos cinemas brasileiros desde 3 de dezembro e foi indicado hoje a 6 globos de ouro. O filme basicamente conta a história da criação da rede social com maior número de usuários do mundo, o Facebook. É uma história repleta de reviravoltas e traições, envolvendo mulheres, drogas, muita astúcia e ganância. O filme  foi baseado na história real contada no livro "Bilionários por acaso: A criação do Facebook", escrito por Ben Mezrich.

Como o objetivo dessa postagem não é contar a história do filme, mas sim discutir questões a respeito da forma como o Facebook foi criado, vou contar apenas uma dose homeopática para efeito de contextualização. Tudo se passa em Harvard onde inicialmente os irmãos Cameron Winklevoss e Tyler Winklevoss tiveram a idéia de desenvolver um site de relacionamentos nos moldes de uma rede social, entretanto não tinham habilidades em programação para desenvolverem essa idéia. Sendo assim eles buscam por Mark Zuckerberg, jovem programador estudante também de Harvard, para compartilharem tal idéia e formarem uma parceria para a criação do site de relacionamentos. Zuckerberg topa de cara participar, entretanto passa a perna nos irmãos Winklevoss e inicia em 2004 o desenvolvimento do Facebook. Em pouquíssimo tempo o Facebook foi se espalhando pelas universidades americanas e posteriormente pelo mundo, porém para um projeto iniciado no alojamento de uma universidade tomar tais proporções, alguém teria que oferecer aparato financeiro para tal, e esse alguém foi Eduardo Saverin, brasileiro estudante de economia e melhor amigo de Zuckerberg.

Embora Eduardo a Mark fossem melhores amigos, quanto mais o Facebook foi expandindo, maior era a ganância de Mark pelo dinheiro. Sob influência de Sean Parker, co-fundador do Napster, que também passou a ter participações no Facebook, Eduardo foi forçado a assinar contratos tendenciosos que acabaram por praticamente retirar seus direitos na empresa, embora tenha sido quem mais injetou dinheiro na criação da mesma.

Resumidamente o que aconteceu em toda essa história: Duas pessoas tiveram uma idéia, alguém roubou a idéia e se junta outro que financiou a mesma. No final quem roubou a idéia inicial passa a perna em quem financiou e fica com toda a fatia do bolo, acumulando uma fortuna estipulada em 25 bilhões de dólares em apenas 6 anos!

Coincidências ou não, essa história nos faz lembrar de outras grandes empresas de tecnologia como Microsoft e Apple, que hoje são símbolos, entretanto iniciaram suas histórias também a partir de idéias roubadas e posteriormente aperfeiçoadas. Será que para ter uma empresa de tecnologia desse porte é necessário ser tão antiético? Bom...isso já é história para outra postagem.

O que mais me surpreende nessa história toda é o fato de tantas empresas de base tecnológica surgirem na academia americana (Google, Facebook, Yahoo!, Microsoft, Apple..etc) e conseguirem uma penetração tão grande na sociedade mundial e países do porte do Brasil não conseguirem alcançar feitos semelhantes. Será que eles são tão mais inteligentes assim? Sinceramente não acredito que seja esta a questão. 

Ainda falta muito incentivo ao desenvolvimento tecnológico e fomento a inovação no nosso país, pensa-se muito pequeno. Enquanto que nos EUA um moleque de 19 anos consegue ficar bilionário com um projeto iniciado no alojamento da sua universidade, no Brasil alguém com tal ambição seria considerado louco atualmente... Essas coisas acabam enraizando na nossa sociedade, desencorajando inclusive mentes de muito potencial, fazendo-as também pensar pequeno e assim não chegarem a níveis como os citados anteriormente.

Não sou dono da verdade e acredito que opiniões divergente às minhas podem acabar surgindo por aqui, mas o objetivo é esse mesmo, debater. Sintam-se a vontade em comentar.

Como aperitivo, assistam ao trailer de "A Rede Social":