Continuando o post anterior sobre Ensino de Programação com Python, coloco aqui algumas referências para a linguagem.

Em português:

Em inglês:

e vem mais coisas pela frente…

Posted in web at August 19th, 2008. 2 Comments.

Venho acompanhando o movimento dos Indie Games desde 2006, quando o lavador de roupa suja me falou a respeito. Indie Game, ou Independent Game, é o nome dado aqueles jogos que estão fora do “mainstream”, sem o investimento da grande indústria dos jogos. São desenvolvidos em pequenos grupos ou, em alguns casos, por caras que sozinhos cuidam da programação, arte, animação, som e tudo mais que tiver envolvido no processo de Desenvolvimento de Jogos. Uma parcela desses independentes é formada por ex-funcionários dessa indústria que resolveram tentar um negócio próprio.

Por não contarem com muitos recursos, principalmente para o marketing, a base de operações dessa galera acaba sendo unicamente a internet. Existem vários sites que divulgam - como o ótimo Jay is Games e o IndieGames.com - e outros que hospedam e oferecem um suporte maior a esses desenvolvedores independentes, a exemplo do Newsground e o ArmorGames, especializados em jogos feitos com Adobe Flash, populares na web. Tem também um Independent Game Festival, que todo ano premia os melhores jogos independentes. É praticamente uma outra camada desse mundo que a gente só costuma conhecer por meio dos “big players” como Blizzard, Eidos, Ubisoft, Rockstar e por aí vai.

alien_hominid.jpg

Vejam só o exemplo da Newsground. Começou em 1995 como um portal que hospedava animações e jogos. Em 2002 o criador do site, Tom Fulp (programador), e Synj (artista gráfico) criaram em Flash o jogo independente Alien Hominid. Foi um sucesso absoluto, tanto que em 2004, após 15 meses de trabalho, foi portado para o mundo dos consoles. Hoje é um game de peso, comercializado para quase todos os consoles, inclusive estão lançando o Alien Hominid HD pro Xbox360. Isso tudo sem falar nos produtos relacionados, como bonés, camisetas, canecas e action figures.

alien_hominid_figures.jpg

A equipe de desenvolvedores aumentou e hoje possuem a empresa The Behemoth, e lançando outro jogo que promete, o Castle Crashers.

wp2_1024x768.jpg

Mas este é apenas o primeiro de uma série sobre os Indie Games, no próximo post vou falar sobre alguns jogos que estão se destacando e como eles ganham dinheiro.

Até mais.

Posted in web at August 19th, 2008. 3 Comments.

Na prática do ensino de programação - nível básico - é muito comum por parte dos professores universitários (como também de cursos técnicos e profissionalizantes) aplicar o Portugol na etapa que trata lógica e algoritmos, e a linguagem Pascal para implementar os algoritmos estudados.

Em primeiro lugar, acredito que o ensino - seja de que for - deve buscar o máximo possível aproveitar o que o aluno já carrega, o conhecimento prévio (e existem teorias “pedagógicas” sobre isso que me escapam agora). Isso quer dizer que:

x ← 10 (atribuir o valor 10 na variável x, no portugol)

é menos intuitivo do que simplesmente

x = 10

Veja que “x = 10″ aprendemos desde cedo na escola e já está mais do que claro para o aluno seu significado, ao invés da “←”, que passa a ser algo a mais que ele vai ter que associar e aprender. Pode ser um exemplo bobo, mas o princípio é aproveitar ao máximo o que o aluno já sabe.

Além disso, um dos argumentos para o uso do Portugol é - como o nome já diz - ser em português. Mas na verdade, nada impede o aluno de aprender a programar já com palavras em inglês, não é tão absurdo assim no início e é um treino, já que ele vai lidar com isso de qualquer forma. Outro aspecto é que o Portugol apenas “traduz” a linguagem Pascal, e por isso carrega ainda o peso das palavras e regras dessa linguagem, peso esse que, a meu ver, torna o processo de aprendizado mais complicado ainda. Coisas como “inicio-fim” ou “begin-end”, sinal de “;” no final das linhas, etc.

Aqui entra a linguagem Python. Escolhi e estou usando o Python no ensino de programação inicialmente pelos motivos a seguir (nessa ordem):

  1. A própria linguagem: fácil, enxuta, intuitiva e com regras simples.
  2. Ambiente interativo (idle ou shell) onde facilmente o aluno pode testar instruções separadamente sem precisar escrever um programa complexo e salvar em arquivo, como também não precisa compilar, já que Python é uma linguagem interpretada.
  3. Software Livre!
  4. Multiplataforma, se o aluno quiser usar o Linux, sem problema, inclusive é nativa em muitas distribuições, como o Ubuntu.
  5. É uma linguagem “útil”, não algo que ele vai aprender só nessa fase e esquecer, ele tem sim uma opção de produzir algo real, visto que com Python dá pra fazer aplicativos web e desktop, jogos etc.
  6. Muito material na Internet e uma comunidade bastante ativa. (e olha que nem falei que o Google usa! :P)

Esses motivos foram os suficientes para “fazer uma experiência”. Na prática, essa experiência de usar Python é muito melhor, muito mais satisfatória.

Primeiro que o Python está sendo aplicado no estudo do algoritmo e ao mesmo tempo na sua implementação, pulando a etapa de fazer algo em portugol e depois digitar em pascal. Com o IDLE aberto durante a aula toda, eles podem fazer testes, operações matemáticas simples, verificar o comportamento das variáveis, realizar operações lógicas em “tempo real”, e por aí vai. Exemplo:

idle_python.gif

O conjunto [ Linguagem Python + Ambiente Interativo ] torna a aula muito mais produtiva. Os alunos podem também fazer comentários sobre os códigos que estão testando (já um treino para a documentação) e ao final da aula podem salvar tudo que fizeram para estudar depois.

Esse post é o primeiro de uma série em que pretendo relatar mais sobre o uso do Python, postar exemplos de código e exercícios. Já no próximo colocarei uma série de referências sobre a linguagem para quem está começando.

Qualquer dúvida, sugestão ou crítica, já sabem, é só comentar! :)

Posted in web at August 15th, 2008. 3 Comments.

Uma das maiores dificuldades - senão a maior - de quem lida com vários projetos e atividades é estabelecer adequadamente quais são as prioridades. No site Agile Software Development tem um artigo interessante sobre isso. Basicamente o autor propõe o uso de uma matriz “Dificuldade x Importância” realmente simples para análise:

prioritisation.jpg

No gráfico acima temos o eixo x representando a Dificuldade (aspectos negativos como risco, esforço, custo, complexidade, tempo etc.) e o eixo y representando a Importância (retorno, risco caso não seja feito etc.). A partir daí posicionamos os projetos dentro desses parâmetros.

Os dois extremos (bloco superior-esquerdo e bloco inferior-direito) definem, respectivamente, o que deve ter maior e menor prioridade. Alta prioridade significa ser mais importante e ao mesmo tempo com um índice de dificuldade menor, ou seja, menor custo, ou menor complexidade, ou que pode ser feito em um menor tempo. Baixa prioridade significa ser menos importante (baixo retorno ou risco de não ser feito pequeno ou inexistente) e ao mesmo tempo um índice de dificuldade maior.

Os outros dois blocos (inferior-esquerdo e superior-direito) definem projetos que precisam ser reavaliados. No caso do primeiro bloco, por ser de baixa dificuldade mas também de pouca importância, pode ser reconsiderado. No segundo bloco, que representa alta importância e também alta dificuldade, pode ser dedicado algum esforço no sentido da simplificação, ou seja, redução do grau de dificuldade (via pesquisa de novas soluções) ou quebrado em projetos menores.

Vale a leitura do artigo completo.

Posted in web at August 7th, 2008. 2 Comments.

Já comentei aqui sobre editores de código. Até alguns dias atrás estava usando o InType, excelente editor, super leve e funcional, o melhor candidato para “clone” do Textmate no ambiente Windows. Inclusive o apresentei para meus alunos, e todos gostaram muito. Coloco aqui 3 vantagens do InType: rápido e enxuto, ajuda pra caramba a digitação de código e muito flexível, dando suporte para dezenas de linguagens. Ainda está na versão alfa, e continuo acompanhando de perto o desenvolvimento.

Agora convenhamos, para grandes projetos nao basta apenas uma ferramenta de ajuda na digitação, é preciso mais, muito mais. Recentemente, estudando Java, conheci o NetBeans, e em pouco tempo já me perguntei “será que tem um desses pra PHP?”… e tem!

NetBeans 6.5 Milestone tem full suporte pra PHP (e XHTML/CSS), download de apenas 15 megas e tem um monte de funcionalidades bacanas além de toda a infra para gerenciar projetos, acesso a sistemas de controle de versão, etc. Ainda tem alguns bugs, mas pra mim o que tá atrapalhando um pouco é quanto ele consome de recursos da maquina, muito, muito pesado. Considerando o que ele já me proporcionou em produtividade e organização, esse “peso” dele é tolerável.

Grande surpresa esse NetBeans pra PHP, recomendo!

Posted in web at July 21st, 2008. 2 Comments.

Continuando a “Semana Nostalgia”…

Trabalho com desenvolvimento de software ha alguns anos, e durante esse tempo passei por algumas experiências interessantes e desastrosas. Compartilhando uma delas aqui com vocês, em 1994/95 um empresário local me contratou para criar um software aplicado a um serviço até interessante: um sistema de pesquisa de preços. Basicamente o consumidor ligaria para uma central de atendimento e consultaria o preço, por exemplo, do arroz… daí o operador no sistema mostraria onde tem o menor preço entre os supermercados da cidade, ou entre os mercadinhos do mesmo bairro, etc. É tudo no “ia” mesmo, porque não foi. O sistema foi criado mas o serviço nem chegou a funcionar (não me perguntem se eu recebi ou não o pagamento). O motivo principal de não ter dado certo, segundo soube, foi a pressão dos comerciantes locais justificando que isso prejudicaria seus negócios. Além disso o serviço era pouco prático (na época pré-internet) e para uma cidade pequena, onde em menos de 15min qualquer pessoa de qualquer bairro chega ao centro da cidade nem compensava ligar.

Ontem - enquanto estava somando preços dentro do supermercado com meu celular - me lembrei dessa história e hoje leio a notícia de que a Internet móvel ultrapassará web convencional, vejo que o iPhone lê código de barras e vários projetos pro Android seguem a mesma linha. Fico imaginando quando o consumidor comum poderá ter no celular seu próprio “sistema de pesquisa de preços”, a lista da feira com preços atualizados, já indicando onde tem os menores preços e até como chegar lá, ou ainda comparar preços, pesos e validade de produtos, ou ainda mostrar preços e promoções num determinado raio de alcance de onde estiver.

Assim como o p2p e os novos meios de distribuição de músicas, filmes etc., a tecnologia nessa direção tende a dar muito mais poder ao consumidor e mesmo os “comerciantes locais” terão que aprender a lidar com isso.

Posted in web at May 15th, 2008. 3 Comments.

É mais do que batida a discussão sobre monetização, ou viver de blog, ter o blog como profissão, full time. Alguns poucos conseguem, muitos acham que já conseguiram e uma arrasadora maioria sonha com isso.

Não vou nem debater muito esse tema porque o li algo no Coding Horror - na minha opinião o melhor blog sobre programação da atualidade - que em um único parágrafo diz muito bem o que penso a respeito:

But I refuse to become a full-time blogger. I think that’s a cop-out. If I look at the people I respect most in the industry, the people I view as role models– Paul Graham, Joel Spolsky, Steve Yegge, Eric Sink, Rich Skrenta, Marc Andreesen, Wil Shipley, Douglas Crockford, Scott Guthrie — they all have one thing in common. They’re not just excellent writers and communicators. They build stuff, too. The world has enough vapid commentary blogs. I want to build stuff– and talk about it.

Lendo esse post (além do seu novo projeto que ainda vou comentar aqui) imaginei que ele está absolutamente certo sobre isso. Os blogs que mais acompanho e gosto (na caixinha aí do lado) são de pessoas que “fazem coisas” também, e não apenas vivem de comentar, falar sobre seus próprios comentários e como ganhar dinheiro com isso, como é comum aqui na blogsfera brasileira. E essa coisa de viver de blog tem ainda um lado que o Alexandre Maron comentou muito bem aqui.

Nessa, os blogs vão pouco a pouco até ganhando espaço, mas perdendo moral pra velha mídia.

Posted in web at April 17th, 2008. No Comments.
Posted in web at April 8th, 2008. No Comments.

Há tempos desenvolvo em PHP, mas só agora resolvi adotar seriamente um framework. Projetos maiores e mais pessoas envolvidas requerem uma certa estrutura e organização que minhas próprias ferramentinhas não proporcionam mais, além do fato de que os frameworks disponíveis já atingiram um excelente nível de maturidade.

A questão passou a ser agora “qual framework adotar?”. Assim como as discussões sobre linguagens de programação beiram os debates religiosos, falar sobre frameworks é falar sobre o ponto “aquele que eu consigo produzir mais e melhor” e o lado pessoal pesa tanto quanto as features do framework. Fiquei entre o CakePHP e o Codeigniter, aparentemente os que mais se aproximam do RubyonRails, seja pelo modelo MVC, produtividade etc. Apesar da recomendação do Jefferson, dispensei o Kohana - um fork “PHP 5 puro” pro Codeigniter - porque tenho que pensar em vários hosts e projetos rodando PHP 4.x.

Nos dois casos, a documentação é muito boa, os recursos são praticamente equivalentes e a comunidade bastante ativa, sendo que o CakePHP ganha em documentação e comunidade, até por já estar mais tempo e mais sólido no mercado. Além das páginas oficiais (com os tradiconais screencasts) andei visitando  alguns blogs sobre o assunto, como o do Elton Minetto, Tulio Faria e Newton Wagner. Conheci também o blog do Elliot Haughin e o Web2ponto0, ambos com ótimos screencasts sobre o Codeigniter. Vi também esse, esse e mais esse comparando os dois frameworks.

Não pretendo aqui indicar nenhum deles, apenas compartilhar meu processo de busca e escolha, já que pelo que pude perceber ambos trazem um ótimo resultado. Apesar da documentação do CakPHP ser mais extensa, a do Codeigniter é até mais didática. CakePHP tem uma melhor organização do core e da aplicação, mas o Codeigniter me pareceu ser mais enxuto e rápido. Gostei do que vi, e vou optar agora pela aparente flexibilidade do Codeigniter - pelo menos por enquanto. Ainda vou fazer testes, desenvolver alguma coisa junto com a JQuery e ver como tudo se comporta.

E então? algum comentário? :)

Posted in web at March 23rd, 2008. 3 Comments.

Vi no Br-Linux a notícia sobre o OpenOffice 3.0. É muito bom ver essa suite em desenvolvimento, fico feliz. Mas não vou comentar as mudanças no OO, e sim o próprio direcionamento do OO.

Imagino que seguir os produtos da Microsoft é - por mais que se fale em “experiência do usuário” ou “concorrência e mercado” ou “provar que o SL (soft livre) pode fazer algo igual ou melhor” - uma má idéia. Vejamos:

  • nada prova que a interface dos produtos da Microsoft seja, de fato, o melhor que temos hoje (já viram o MacOS?).
  • o SL justamente por ser livre e, de certa forma, sem “compromisso” com acionistas, corrida pelo lucro etc., poderia se colocar numa zona de conforto maior e usar isso como foco pra desenvolver inovações em matéria de usabilidade, design, recursos, enfim, algo realmente novo. Em outras palavras, o SL não tem que necessariamente fazer um clone grátis dos produtos da MS pra conquistar mercado.
  • o OO ficou completamente “obsoleto” quando a Microsoft lançou a versão 2007. A MS por estar a frente inovou e o OO comeu poeira. Essa versão 3.0 do OO tem novos recursos, mas visualmente continua a mesma. A MS fez algo novo.

Em um trecho do excelente livro Getting Real, sobre desenvolvimento de software, empresa enxuta e inovação, o autor fala:

“(…) também é importante não ficar muito obcecado com a concorrência. Analise demais outros produtos e você vai começar a limitar sua maneira de pensar. Dê uma olhada e vá em frente para sua própria visão e suas próprias idéias.”

Mesma coisa vale pro KDE. Pessoalmente adoro o outro, o GNOME, justamente por não simplesmente copiar o modelo da MS e pensar em outra forma de organizar as coisas.

Não quero menosprezar o trabalho da equipe do OO (que é por sinal um trabalho louvável, ainda mais quando se tem que tratar os padrões fechados da MS) mas a realidade tá mostrando que vale mais inovar do que simplesmente copiar algo estabelecido.

Posted in web at March 20th, 2008. No Comments.