Para fechar 2014, posts mais acessados e trilha sonora

Em 2014 fiz vários posts de aprendizados que tive e continuo tendo.

Deixo aqui o Top 5 do ano, dos posts mais acessados em 2014:

  1. Quem usa iPhoto / Mac parece precisar mover a biblioteca de fotos. Foi um dos posts que fiz quando precisei fazer este movimento.
  2. A prática, o treino, é necessário e essencial para melhorar. O post sobre CodingDojo também teve seu destaque no ano de 2014 e sempre é referência quando preciso falar sobre uma dinâmica legal para ensinar e aprender.
  3. Delphi foi a linguagem de programação que me projetou profissionalmente. Foi a linguagem que me ajudou a aprender novas linguagens de programação e conhecer novas tecnologias. E o post sobre configuração de um projeto Git para Delphi merece a terceira posição nos acessos do ano. A comunidade Delphi segue forte (exemplo o DUG-RS) e com o Git/Github/BitBucket tem uma forma fácil de compartilhar código!
  4. No dia 23 de junho de 2014 foi o dia que meu blog mais teve acessos em um mesmo dia. E o post mais acessado foi um sobre o trabalho. Ou porque ele não acontece no local de trabalho? Uma reflexão sobre produtividade e sobre proteção do tempo. Falando nisso, #VivaSeuTempo. 🙂
  5. E teve um post em que falei sobre os 5 arrependimentos antes de morrer, e sobre como pode ser hoje o primeiro dia do resto da sua vida. Vale bastante considerando hoje um dia onde as pessoas costumam parar para refletir como foi o ano. E planejar o próximo. E a dica que fica é de como criar mais momentos de reflexão? Dentro do #VivaSeuTempo eu deixo algumas dicas mas certamente novas virão em 2015.

E dezembro foi embalado por algumas músicas, e aqui você tem uma lista do #SomDoDia com alguns sons que destaquei em Dezembro. Em 2015 a lista volta com mais força. 🙂

Ah, quer ficar ligado nas novidades, eventos e dicas de materiais que escrevo e produzo?
Se cadastra na minha lista!

Evento online sobre RAD Studio XE4! Novidades do Delphi!

No dia 11 de junho vai acontecer um webinar sobre o RAD Studio XE4, a partir das 14h30min!

O que vai ser tratado?

  • Desenvolvimento Multidispositivo
  • O novo compilador
  • Evoluções da Linguagem Delphi
  • Templates para aplicações móveis
  • Controles e estilos nativos, Actions e Gestures
  • Acesso nativo a sensores
  • Banco de dados embutido
  • Desenvolvimento multicamadas

Curte Delphi? Aproveita e se inscreve no evento!

Se quiser dar uma olhada em vídeos sobre o produto, existem alguns bem legais no site da embarcadero!

E o Delphi fez 18 anos

A cada nova tecnologia e a cada nova linguagem aprendida, nos desenvolvemos e melhoramos como profissional e como pessoa. Quando aprendi Java, comecei a desenvolver melhor em Delphi. Quando aprendi Ruby, Python, foi um outro salto com as outras linguagens. O Delphi sempre terá seu lugar, pois foi a linguagem que me permitiu desenvolver muitas habilidades que hoje são muito importantes na minha vida. — Daniel Wildt

No dia 14 de fevereiro o Delphi completou 18 anos da sua criação. Alcançou a maioridade? O produto tem buscado seu espaço novamante. Recentemente foi premiado… tudo ajuda neste processo.

Hoje, 22 de fevereiro, estou completando 34 anos. E parei para pensar um pouco sobre “Eu, Eu mesmo e o Delphi“. Hehe.

Eu comecei a trabalhar Turbo Pascal, Turbo C++ e Turbo Assembler na faculdade em 1996/1997. Em 1996 tive meu primeiro contato com o Delphi 1 através de uma empresa em que atuei com suporte técnico.

Comecei a trabalhar profissionalmente com o Delphi em 1997. E com cada versão uma pequena lembrança:

  • Delphi 1 (programação orientada a eventos, saindo do Turbo Pascal)
  • Delphi 2 (ótimo, mas sem code complete)
  • Delphi 3 (componentes web! e midas começando… code complete!!)
  • Delphi 4 (docking e midas melhorado, na época do inprise… acabei usando muito pouco esta versão)
  • Delphi 5 (yay!)
  • Delphi 6 (saudoso da minha primeira certificação em 2002, também o ano em que iniciei atividades como instrutor oficial da ferramenta, dbExpress!, WebServices!)
  • Delphi 7 (para mim ainda a melhor IDE criada e que até hoje muita gente usa)
  • Delphi 8 (.NET chegando na história, DUnit sendo embarcado na ferramenta, MDA tomando forma com o ECO — Bold nas versões antigas)
  • Delphi 2005 (aqui lembro em um 20 de setembro, feriado no Rio Grande do Sul, quando fui para SP e consegui passar na certificação de Delphi.NET)
  • Delphi 2006 (minha última certificação foi no Delphi 2006 Win32)
  • Delphi 2007, 2009, … e começam os XEs! Chegamos aos dias de hoje!

É um tempo já acompanhando este mundo. Eu agradeço ao Delphi por tudo o que ele me proporciona. Conheci pessoas que são meus amigos e profissionais de mercado que respeito. Pessoas que serviram como modelos para mim, seja desenvolvendo, em atividades de consultoria, coaching ou mesmo quando estou em sala de aula. E uma comunidade que sempre posso contar.

O Delphi também ajudou a me tornar um escritor. Através da ClubeDelphi e ActiveDelphi, pude desenvolver  a escrita técnica e  ajudar a comunidade em diversas ocasiões. Diversos assuntos trabalhados, desde Midas (DataSnap), Decision Cube, RTTI, Automação de Testes com DUnit, até falar sobre Paradox (no artigo “azar eu gosto”), Interbase e outras coisas legais.

Até em programas de TV apareci, em 2005 e 2009 através de entrevistas em eventos em que palestrei.

Sempre bom lembrar destas experiências.

Para dar mais gosto ainda, no ano passado fui convidado para fazer parte do time de MVPs que ajudam a divulgar a ferramenta e engajar a comunidade. Já faço este trabalho desde 2002 quando comecei a trabalhar como instrutor. E formalmente desde 2003 tenho um trabalho de comunidade quando fundei o DUG-RS junto com o Rafael Helm. Hoje tenho como missão neste trabalho de MVP poder compartilhar o uso de práticas ágeis para a comunidade Delphi. Trabalhar conceitos de desenvolvimento orientado a testes, automação em geral, enfim, práticas que ajudem no desenvolvimento de desenvolvedores profissionais. E desenvolvimento de produtos que possam trazer valor efetivo aos clientes que fazem uso dos mesmos.

E era isto. Rumo aos 19 anos Delphi! E eu vou rumo aos 35! Let’s go!

Delphi Conference 2012 – Empreendedorismo e desenvolvimento de produtos no dia 23/outubro em São Paulo

Dia 23 de outubro é dia de Delphi Conference 2012 em São Paulo. A comunidade Delphi se reúne no Centro de Convenções Rebouças para um dia cheio de palestras, divididas em cinco trilhas. A programação já está disponível no site do evento!

Estarei ministrando no final da tarde (se não mudar nada na programação), o meu workshop “Da visão a produção“. Serão quase duas horas, quebradas em palestra e dinâmicas com os participantes.

O objetivo é trabalhar com a comunidade dicas de como desenvolver novos produtos, trabalhar conceitos de Metodologias Ágeis, Empreendedorismo, Lean Startup, Business Model Canvas, Lean Canvas, e várias outras coisas legais. Para entender um pouco mais sobre este workshop é legal olhar as referências que me ajudam a montar ele.

Esta Delphi Conference é especial porque é a primeira depois que a Embarcadero faz depois da criação do programa de MVPs. Apesar de não ser mais instrutor oficial de Delphi (fui entre 2002 a 2006) ainda mantenho o apoio a comunidade via DUG-RS (que fundei com Rafael Helm em 2003) e tenho como propósito levar a comunidade Delphi práticas de Metodologias Ágeis, como automação de testes, melhoria contínua e enfim, práticas que podem ajudar na evolução técnica da comunidade. E também práticas relacionadas ao desenvolvimento de produtos.

E aproveitando que já estarei em São Paulo… no dia 24 eu vou ministrar uma turma do workshop da visão a produção, em  “versão full” de 8 horas, lá na Adaptworks! A turma está confirmada, então fica a dica para você que está em São Paulo: participar da palestra no dia 23/outubro dentro da Delphi Conference e dia 24/outubro fazer o curso lá na Adaptworks.

Preparando um projeto Delphi para o Git

A base aqui é preparar um projeto Delphi Git e publicar no GitHub. Neste exemplo usei uma demonstração do uso de um TWebBrowser para mostrar um gráfico do Google Chart Api. O repo foi originário de uma pergunta que rolou na lista do DUG-RS e aproveitei para brincar um pouco.

Antes de qualquer coisa… instale o Git para a plataforma Windows. 🙂

Eu gosto de usar o Git pela linha de comando mas o GitHub fez um cliente para windows. Fica a sua escolha.

Acostumei a usar a linha de comando e posso garantir a você que é bem tranquilo de trabalhar. Te dá controle e uma vontade constante de manter o repositório atualizado. A integração de código com a base de código no repositório agradece!

Sobre outras opções de instalação, se você é usuário do Tortoise SVN pode ter interesse em avaliar o Tortoise GIT.

Bom, depois de instalar vamos via “Git Bash” até a pasta onde está o seu código fonte.
Para saber a pasta atual, use o comando “pwd”.

Estando na pasta, vamos inicializar um repositório Git através do comando:

$ git init
Initialized empty Git repository in c:/Users/dwildt/Code/google-graph/.git/

A partir do comando de status, podemos ver todos os arquivos que devem ser enviados para o repositório:

$ git status
# On branch master
#
# Initial commit
#
# Untracked files:
# (use “git add <file>…” to include in what will be committed)
#
# GoogleGraph.cfg
# GoogleGraph.dof
# GoogleGraph.dpr
# GoogleGraph.res
# GoogleGraph.~dpr
# dcu/
# exe/
# src/
nothing added to commit but untracked files present (use “git add” to track)

Note que ali na listagem aparecem arquivos .~dpr e aparecem pastas exe e dcu. Não queremos estas pastas no nosso controle de versão. Então vamos criar um arquivo “.gitignore“. Para fazer a criação deste arquivo, vamos fazer um touch e depois editar o arquivo usando o VIM. Você também pode fazer a edição deste arquivo pelo próprio Delphi, mas enfim, aproveite para brincar um pouco com o VIM.

$ touch .gitignore
$ vim .gitignore

Ao entrar no VIM, entramos em modo de inserção pressionando “I”. E vamos digitar o seguinte:

*.~*
*.dcu
*.exe
exe
dcu

Para sair do VIM, vamos fazer: <ESC> + :wq + <ENTER>
Para conferir o conteúdo do arquivo podemos usar o comanto “cat”:

$ cat .gitignore

Então em resumo, coloquei que arquivos com extensão dcu, exe e qualquer arquivo que a extensão comece com “~” deve ser deixado de lado. Ainda, que as pastas exe e dcu não devem ser consideradas. Ao fazer um novo git status os arquivos que estão no .gitignore já não aparecem mais.

Sobre a estrtutura de projeto, eu normalmente configuro meus projetos com a estrutura de pastas:

  • src – fontes
  • dcu – units compiladas
  • exe – binários
  • Tenho outras pastas que crio normalmente (exemplo docs), mas para o foco do post está ok.

Agora vamos fazer um commit dos arquivos. Você pode estar se perguntando onde configuramos o repositório. Ainda não configuramos. E aí você me pergunta como assim não configuramos? Como você vai fazer um commit sem ter um repositório definido. Bom, vamos ver na prática:

$ git add .

O comando acima adiciona todos arquivos que não estão “controlados” no commit a ser feito. Agora vamos fazer o commit.

$ git commit -am “primeiro commit do demo com google graph e twebbrowser”
[master (root-commit) f7ca3f2] primeiro commit do demo com google graph e twebbrowser
7 files changed, 474 insertions(+), 0 deletions(-)
create mode 100644 .gitignore
create mode 100644 GoogleGraph.cfg
create mode 100644 GoogleGraph.dof
create mode 100644 GoogleGraph.dpr
create mode 100644 GoogleGraph.res
create mode 100644 src/UFormGoogleGraph.dfm
create mode 100644 src/UFormGoogleGraph.pas

Com este comando, ao fazer um git status, temos:

$ git status
# On branch master
nothing to commit (working directory clean)

E aqui mora o principal problema de quem começa a trabalhar com o git, de confundir o commit que realizamos aqui com uma operação de checkin em um SubVersion por exemplo. Ao fazer um commit, apenas estamos “indicando que aquela unidade de trabalho foi finalizada”. Durante um dia de trabalho, devemos fazer diversos commits, e pequenos commits.

Isto está muito ligado com a prática de Continuous Integration. Devemos garantir que o nosso código está no controle de versão e sendo compilado e validado. Isto é assunto mais específico para outro post. O objetivo aqui é aproveitar este demo que fiz, para poder mostrar como podemos usar o Git com Delphi.

Ok, mas e aí, e o tal repositório?

Vou usar o GitHub, e vou criar um repositório. Lá fui eu e criei na minha conta o repositório abaixo:
https://github.com/dwildt/google-pie-graph-with-delphi-twebbrowser

Aí para poder enviar e sincronizar os arquivos, vou adicionar um “remote“, que é a forma que tenho para conectar meu fonte local com uma fonte remota. Voltamos para a linha de comando.

$ git remote add origin git@github.com:dwildt/google-pie-graph-with-delphi-tweb
browser.git

E feito isto, agora vou sincronizar meus dados com o repositório.

$ git push origin master
Counting objects: 10, done.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (10/10), 5.07 KiB, done.
Total 10 (delta 0), reused 0 (delta 0)
To git@github.com:dwildt/google-pie-graph-with-delphi-twebbrowser.git
* [new branch] master -> master

Fazemos isto através de um push. Origin é o nome que dei para o remote no passo acima. Master é o nome do branch. O master é o branch principal.

E pronto, seu projeto está agora no Github. O ponto é que agora o processo vai ser:

  • git status para ver o que modificou
  • git add e git commit para registrar as mudanças.
  • git push para enviar as mudanças para o seu repositório.

Você pode ter mais de um remote configurado, isto é tranquilo. Você pode ter por exemplo, o seu remote para controle de versão puro e pode ter um outro que quando recebe o código fonte, realiza um build e instala a versão em um determinado ambiente.

Para conhecer mais sobre GIT, deixo referências:

Projeto Startup no DUG-RS inicia sábado 26 de maio de 2012!

Uma das coisas que acredito, é que um desenvolvedor deve ser capaz de desenvolver um software por completo. Gestão, comunicação, análise, codificação, testes, automação, infra… e desenvolvimento de produtos! Ser um empreendedor, ser inovador, sempre em busca de desafios.

Mas como conseguir evoluir em todas estas áreas? Primeiro, o ponto é entender quais destas áreas você realmente gosta e quer ter excelência técnica. E buscar formas de criar, aprender, inovar.

O Grupo de Usuários Delphi do Rio Grande do Sul inicia neste sábado o “Projeto Startup“. A ideia é reunir a comunidade Delphi e criar algo, com as seguintes características:

  • Conceber um produto, usando técnicas de desenvolvimento de produtos, como se este grupo fosse uma startup. Criar experimentos e buscar criar um produto que cresça e ajude um determinado segmento de clientes.
  • Desenvolver e promover o software livre, criando um ambiente de colaboração e liberdade para quem desenvolve com Delphi e quer aprender e ensinar.
  • Permitir que as pessoas possam evoluir em áreas onde tenham interesse, seja análise, design, usabilidade, programação, infra estrutura.
  • Buscar inovação, sejam com tecnologias do Delphi ou tecnologias relacionadas, exemplo Amazon Web Services.
  • Permitir evolução técnica da comunidade Delphi.
  • Uso de práticas e disciplinas e princípios das Metodologias Ágeis.

E onde eu entro nesta? Bom, fundei o DUG-RS em 2004 e estarei sempre ajudando a comunidade a se manter. E neste evento específico, estarei iniciando este trabalho com o pessoal, através de uma versão “extra-super-light” do Workshop Da visão a  Produção, ajudando o pessoal a desenvolver um novo produto, entendendo o que pode ajudar algum nicho de mercado e entregar de forma efetiva e constante um produto desenvolvido de forma colaborativa pela comunidade.

Então é isto. Sábado, 26 de maio de 2012, a partir das 08h45min, na Faculdade Dom Bosco em Porto Alegre, inicia o Projeto Startup do DUG-RS! Se você gosta de delphi, análise de negócios, desenvolvimento de produtos, startups, open source, métodos ágeis, este é o momento! Apoie e ajude!

Testes para Desenvolvedores Delphi – Palestra da Delphi Online Conference

Eu tive a oportunidade de palestrar na Delphi Online Conference, evento realizado no dia 25 de fevereiro de 2010. Palestrei sobre Testes para Desenvolvedores Delphi, e foi uma oportunidade para tratar do assunto Metodologias Ágeis para a comunidade Delphi.

Esta mesma palestra eu apresentei ao vivo na Delphi Conference realizada em 2009.

Falei sobre Manifesto Ágil, princípios do Manifesto Ágil, falei sobre Sistema Toyota de Produção e Lean, falei sobre eXtreme Programming.

Depois entrei para ferramentas e um exemplo de uso. Na parte de ferramentas, falei sobre DUnit, Selenium IDE, Delphi Discover, Want, e inclusive publiquei o exemplo usado no Google Code (projeto Delphi Test Automation). Pretendo seguir trabalhando este exemplo para adicionar mais ferramentas e gerar mais informação para a comunidade.

É importante que todo desenvolvedor saiba trabalhar com diferentes técnicas de teste, exemplo testes de unidade ou testes funcionais. Ainda, que busquem técnicas e ferramentas de automação que levem a maior produtividade.

Afinal, tempo é dinheiro certo?

Não! 🙂

Como já diz o Jaime Wagner, tempo é vida. Então use seu tempo para automatizar ao máximo seu trabalho e invista seu tempo em outras coisas ao invés de ficar horas testando uma aplicação manualmente. Faça certo da primeira vez, construa seu software com qualidade, seja transparente com seu cliente, e trabalhe em equipe.

Bom, você pode fazer download da apresentação ou assistir a mesma online. Ela dura pouco mais de 1h e 10min. Aproveite e qualquer comentário, por favor, colabore, critique e mande feedback.

— Daniel Wildt

en: Introduction to Test Driven Development

So, I have done one presentation about Test Driven Development yesterday, touching TDD concepts and also lots of concepts about Behavior Driven Development (BDD).

There are simple concepts about the test first process. You have to write a test that fails, write code to make the test pass and then refactor your code. Keep the bar green to keep the code clean, remember this.

Repeat this cycle until you don’t have anything else to test for a specific feature.

Looking at a User Story and its acceptance tests, you also have to make sure you are adding business value on every test.

Simple right?

Well, you have to practice.

A lot.

Really.

I’m not kidding.

Believe me.

By the way, don’t leave technical debt behind.

Just for information, currently I manage teams developing in Java (Web), Java (Mobile) and Delphi (Desktop/WebBroker).

Looking at Java Web, I’m starting to teach teams how to use JUnit for automated unit tests, and code coverage with Emma and EclEmma (Eclipse Plug-in).

For Java Mobile, the solution will be based on J2ME Unit and Cobertura for Java ME.

And Delphi, we are going with DUnit and Delphi Discover, a Coverage Tool for Delphi programmers.

And also looking at test automation, both Delphi and Java Web apps will use Selenium to help on automation of web processes.

Well, you can wait more articles on each of those tools and relation to Agile Development and eXtreme Programming practices.

So, remember: you are build tests for prevention of defects. With this you are also building tests to do regression testing.

Keep quality high, always.