Blog sobre desenvolvimento de software (Java, muito Java!), inovação tecnológica e cotidiano do Universo de TI. Acesse notícias, tutoriais, material de cursos e eventos, código, desafios, soluções, opiniões, pensamentos, divagações, balbuciações e abobrinhas diversas. Deixe seu comentário!

Tecnologia

Java:
  • Java Standard Edition
  • Web Tier: JSP, JSTL, Servlets, Facelets, Tapestry, Velocity, FreeMarker,  XSL, AJAX e JQuery
  • MVC: Beehive, JSF, Spring MVC, VRaptor 3 e Struts 2
  • Persistência: JDBC, JPA, Hibernate e TopLink (EclipseLink)
  • Web Services: JAX-WS, JAX-RS e Axis 1 / 2
  • Application Services: Portlets (Weblogic Portal), JNDI,  EJB 2 / 3, JMS, JTA e JavaMail
  • Servidores de Aplicação: Weblogic, Glassfish e JBoss
  • Containers: Tomcat e Jetty
  • Desktop: Swing, Beans Binding, JGoodies
  • Multithreading
  • Testes: JUnit, Emma e Selenium
  • Scheduling: Cron e Quartz
  • Segurança: JAAS, Spring Security e LDAP
  • Controle de Versão: Mercurial, Git, SVN e CVS
  • Automação de builds: Hudson, Maven e Ant
  • IDES: Intellij, Netbeans e Eclipse
  • Outros: Apache Commons, POI e reCAPTCHA
Bancos de Dados Relacionais:
  • MySQL 5
  • Oracle 10g / 11g (PL/SQL)
  • SQL Server 2005 / 2008
  • HSQLDB
  • Derby
  • H2
Soluções escaláveis de alta disponibilidade:
  • Clustering e Load Balancing (Tomcat / Jetty / Apache 2 / GlassFish)
  • Replicação Master / Slave com MySQL
  • Cloud computing com Google App Engine (Datastore / Memcache)
Sistemas Operacionais: Windows, Linux e OS X.

Demais linguagens:
  • C  (intermediário)
  • C++ (básico)
  • C# (intermediário)
  • Flex (intermediário)
  • PHP (intermediário)
  • Scala (intermediário)
Modelagem de Software e Dados:
  • UML: Ferramentas CASE standalone e integradas ao IDE.
  • MER: ERWin, Clay Mark II, MySQL Workbench e Power*Architect

Aqui está uma lista das tecnologias com as quais me sinto confortável. Por confortável quero dizer que passei um tempo significativo aplicando-as em projetos e POCs, aperfeiçoando meu conhecimento e ganhando produtividade. Essa experiência me levou a esbarrar em problemas cotidianos e corner cases, e também a encontrar bons canais de ajuda (diga-se: documentação, fóruns especializados, etc). Em resumo: estou pronto para ajudar desde alunos que buscam iniciar com determinada tecnologia e entender seus principais conceitos até alunos mais avançados que buscam a solução para um problema técnico em tempo hábil.
Veja que a forma como agrupei as tecnologias não é das mais ortodoxas (e.g., entenda Application Services como: "qualquer outra coisa que rode em um Application Server e possua um JSR"), muitas das tecnologias mencionadas estão intrinsecamente ligadas a outras, e devido a sua vasta gama de funcionalidades, poderiam ser facilmente classificadas em mais de uma categoria.
Deixei de listar algumas tecnologias por motivos como:
  • Ainda não ter aplicado a tecnologia em projetos reais (GWT, Ext JS, Lift, Wicket).
  • Falta de conhecimento teórico (por exemplo: me falta vivência com desenvolvimento mobile para falar de Android ou Java ME e com certeza não sou nenhum perito em NoSQL).
  • Ter usado apenas um pequeno subconjunto das features da tecnologia (DB2, Sybase, Lucene, Solr, JAXB, Terracota) e/ou ter usado a tecnologia de uma forma muito particular para resolver determinado problema (ADF, Progress, BlazeDS).
  • Ter listado tecnologias que automaticamente implicam conhecimento em outras de base (por exemplo: XML, Javascript, JSON, (X)HTML, CSS, etc).
  • Por ter esquecido de listá-las ou ignorado propositalmente (a idéia é que a lista fosse razoavelmente curta, servindo de referência para potenciais alunos).
Em relação a outras linguagens, gostaria de deixar claro que minha definição para básico e intermediário é bem mais relaxada do que no caso de Java. Básico significa que eu conheço a sintaxe da linguagem, bem como aquelas bibliotecas de dia a dia (por exemplo: STD em C++). Intermediário significa que eu já fiz algum projetinho mais complexo com acesso a banco e uso de frameworks / bibliotecas populares (por exemplo: Smarty, CodeIgniter e PEAR em PHP). Não me considero um especialista (ou mesmo um programador competente) nessas linguagens, porém, me sinto apto a ajudar estudantes de graduação / pós-graduação com disciplinas e atividades que façam uso delas.
Além de toda a parte ferramental, estou pronto para discutir assuntos teóricos, ensinando conceitos de Engenharia de Software, Orientação a Objetos, Bancos de Dados Relacionais, Algoritmos e Estruturas de Dados, Estatística e Contabilidade. Uma das coisas que deixo claro para todos os meus alunos é que, por mais aplicada que seja a dinâmica em sala de aula, não é possível escapar da base teórica; conceitos importantes serão invariavelmente abortados (A intenção da 7RTC, muito mais do que ganhar dinheiro, é formar profissionais competentes).
Finalmente, apesar de estar publicando meu currículo e tecnologias de interesse, não estou aberto no momento para novas oportunidades de emprego e participação em projetos freelance (peço a compreensão de todos).
Minha intenção é disponibilizar informação para alunos em potencial. Para mais detalhes não hesite em me procurar através do formulário de contato ou por email.