sábado, maio 04, 2013

Linux em Arrow, finalmente!

Pra quem acompanha o seriado Arrow já deve ter percebido que a produção é patrocinada pela Microsoft. Todos os celulares que aparecem com alguma marca são Nokia, as pessoas usam o Surface e têm Windows 8 instalado em suas máquinas... Nada de errado até aí, mas os personagens usam o BING para procurar informações na internet. Quem na vida real faz isso? Sério?

Porém, um dos personagens não caiu nas garras da gigante de Bill Gates.

No episódio dessa semana, "The Undertaking", podemos dar uma olhada no apartamento do veterano de guerra e guarda-costa do Arqueiro, John Diggle. E advinha qual o sistema ele usa quando não está perseguindo bandidos?

Felicity: Acho que ouvi um software livre.

Vamos dar uma olhada mais de perto:


Pra quem não conhece, essa interface parece ser a Unity, padrão da distribuição Ubuntu Linux.

Na boa, Diggs já tinha meu respeito a muito tempo. Depois desse episódio ele passa a ser meu personagem favorito da série.

Felicity com cara que instalaria o Ubuntu em todas as
máquinas se não perdesse o patrocínio de Bill Gates.

quarta-feira, dezembro 05, 2012

GUI Toolkit: Uma eterna procura

Esse semestre eu cursei a matéria Projeto de Interface de Usuário, ministrado pelo Dr. Jair Cavalcante Leite, uma espécie de introdução ao campo de interface humano computador. É engraçado como muita coisa que nós gostamos, e outras tantas que detestamos, nas interfaces gráficas das ferramentas que usamos tem um porquê de estar ou não lá.

Uma das coisas que eu gostei dessa matéria com relação a outras que eu cursei na UFRN foi o fato que o professor nos deixou livre para usar as tecnologias que quiséssemos no projeto, o que me permitiu experimentar o GTK+, uma biblioteca de interface gráfica, e eu decidi não usar nenhum binding, ou seja, usei a linguagem em que a biblioteca foi feita originalmente, isto é, C. Era algo que eu queria fazer a algum tempo.

Quando você pensa em programação de maneira comercial, interface gráfica é crucial para o sucesso de um produto. E após alguma pesquisa a respeito do assunto, também um grande limitador de requisitos. Vou citar aqui algumas coisa que eu aprendi a considerar ao escolher uma biblioteca gráfica.

Linguagem

Diferentes bibliotecas são escritas em diferentes linguagens. Isso faz com que as bibliotecas herdem características das linguagens em que foram escritas, por mais que essas bibliotecas tenham bindings para outras linguagens. As mais tradicionais e mais utilizadas foram escritas em C, ou seja, se você quiser usá-la com uma linguagem orientada a objetos, prepare-se para alguns pedaços de códigos bem procedurais, a não ser que o binding da linguagem seja muito bem feito.

Plataforma

Mantendo o escopo de desktop, diferentes sistemas operacionais aceitam essas interfaces de maneiras diferentes. Alguns toolkits tentam circular essa deficiência enquantos outros assumem que eles são específicos para seu S.O. Os primeiros tendem a seguir duas abordagens diferentes para ser multiplataformas:

Utilizam a API nativa de cada Sistema
É o caso da wxWidgets e do projeto XWT. O ponto bom dessa abordagem é que o aplicativo fica com a aparência nativa do sistema em que se encontra, mas tem que usar aos controles comuns a todas API, tornando-a meio limitada
Têm uma implementação específica para cada Sistema
Acho que a maioria dos toolkits usam essa. A vantagem é que podem ser mais completos, definindo todos os controles que acham necessários, implementados do jeito que acharem melhor, mas acaba comprometendo a aparência dos programas, dando a impressão de estarem deslocados em alguns Sistemas.

Uma curiosidade é que o GTK+ tá trabalhando para poder rodar via navegador, através de conexão de rede (incluindo internet!), o que eleva o termo multiplataforma á um outro nível.

Documentação

Infelizmente é aqui que muita biblioteca peca e não só de GUI. Não é à toa que GTK+ e Qt são tão utilizadas, elas mantêm em seus sites uma referência completa de maneira organizada e sempre atualizada. Não se pode dizer o mesmo de alguns bindings delas.

Licença

E aqui muitos programadores pecam. Lembrem-se de sempre pesquisar a licença de uso das bibliotecas que vocês usam. Algumas licenças têm limitações de uso e distribuição do software que usa o toolkit que foi licenciado. É bom ter isso em mente para não ter problemas judiciais e financeiros.

Então, é isso. Espero ter ajudado a vocês a ter uma idéia de qual interface escolher. Uma dica a mais é tentar desenvolver de maneira modular, mantendo a lógica de negócio independente da interface usada, assim você terá mais liberdade de escolher, e caso necessário, mudar de toolkit de acordo com as suas necessidades. 

sexta-feira, novembro 05, 2010

A Crença dos Trabalhadores da Pedreira

Esqueça o Chile. Não vou falar de catástrofes com finais felizes - que por sinal acontecem muito na vida profissional na área de software. Retorno a esse blog para falar sobre uma das coisas que mais nos interessa quando decidimos seguir uma carreira: Realização.

Mês passado um colega meu que cursa Psicologia me ligou perguntando se eu poderia dar uma palestra para estudantes do Ensino Médio e vestibulandos sobre como é o curso de Ciência da Computação. Seria um "Dia da Carreira" para esses estudantes, assim alguns profissionais e universitários estariam lá falando sobre suas respectivas áreas. Senti-me honrado em poder representar a "classe".

Fui o último dos palestrantes do dia. Por isso pude prestar bem atenção em cada uma das palestras. Medicina, enfermagem, arquitetura, serviço social... Algumas constantes apareceram durante o dia, acho válido citá-las aqui:

  1. Dinheiro é proporcional a tua dedicação e profissionalismo na área.
  2. Existem profissionais bons e ruins em todas as áreas.
  3. Sempre há mercado de trabalho se você souber procurar.
  4. Todos os palestrantes comentaram como se sentem realizados no seu trabalho por poder ajudar alguém.

Achei interessante esse último ponto. Todas as profissões que estavam lá lidam diretamente com um cliente, com um paciente, com uma pessoa. Essas pessoas geralmente retornavam ao profissional para lhe agradecer e, às vezes, até presenteá-lo por seu serviço.

Depois disso, as atenções são voltadas a mim. Um "nerd" que passa boa parte do tempo na frente de um computador. Cuja obra não passa de um monte de caracteres que boa parte da população mundial não compreende.

No decorrer da apresentação comentei sobre como eu, ao ser um Cientista da Computação, me senti tão realizado ao ver as outras apresentações quanto o próprio orador. Porque para um médico descobrir um tumor e salvar uma vida, para um arquiteto poder andar numa obra antes dela ter sido construída, para isto houveram vários cientistas que se esforçaram ao máximo para fazer algoritmos e programas melhores.

Ao ler The Pragmatic Programmer, de Andrew Hunt e David Thomas, logo no primeiro capítulo eles nos chama a atenção para nunca nos esquecermos da big picture, do programa ou problema como um todo. Porque cada um de nós contribuímos direta ou indiretamente para que todo o mundo atual fique cada vez melhor.

"Nós que cortamos meras pedras, devemos sempre vislumbrar as grandes catedrais." Crença dos trabalhadores da pedreira.

quinta-feira, março 11, 2010

public static void...

Volta às aulas na UFRN me empurra a situações desconfortáveis, posso enumerar algumas aqui: noites mal dormidas, aulas mal dormidas assistidas, alimentação desregulada e linguagens de programação novas.

Apesar de não me ser completamente estranho, é a primeira vez que eu realmente vou usar Java. Segundo literaturas por aí, uma versão enxuta de C++, definição que discordo toda vez que crio um método main, sinto-me como que escrevendo um feitiço ou algo assim.

Não que eu não goste da linguagem, longe de mim, só acho que não é bem o meu estilo de programação. Mas pelo visto é uma linguagem muito poderosa, além da facilidade de ser portável, merece meu respeito.

quinta-feira, janeiro 14, 2010

Dicas de férias para programadores

Eu sou um ótimo aluno. Se o calendário acadêmico me diz que em Janeiro eu estou de férias, eu tiro férias. E isso me deu algumas dores de cabeça.

Por isso, colegas de curso, deixo aqui algumas dicas para não se dar mal na sua vida na universidade:

  1. Olhe sempre todos os seus e-mails.
  2. Pode parecer óbvio, mas no calor do verão quando você está nas praias sem conexão à internet você pode esquecer de um detalhe tão importante. Lembre-se sempre de parar em uma Lan House ou carregar consigo um modem 3G.

  3. Não marque viagens para muito longe por muito tempo
  4. Você nunca sabe quando um professor vai querer marcar entrevista para bolsa contigo. Não é o fim do mundo, mas você terá que esperar até a próxima oportunidade.

  5. Não pare de "estudar"
  6. Teve um tempinho entre uma balada e outra? Procure um livro, leia uma revista de tecnologia, siga um tutorial na net. Lembre-se que a área de T.I. é uma área de constante mudanças. E tem sempre um nerd mais atualizado que você, então corra atrás.

  7. Descanse
  8. Evite stresses desnecessários, tua vida já é cheia deles. Não tem por que até férias ficar sem dormir pensando quais matérias você tem que passar esse semestre para terminar o curso sem se atrazar (muito), deixe isso para o período letivo quando você pode fazer algo a respeito.

Faça isso e seja feliz. Eu não fiz e talvez pague pelas consequencias.