RecastEu ouço muitos podcasts. Muitos. De tecnologia, de história, de entretenimento. Me divirto muito e não há um minuto que eu esteja fazendo algo mecânico que não esteja ouvindo um podcast. Pedalando, tomando banho, caminhando, estou sempre de fone de ouvido.

Mas de vez em quando eu fico bravo com os editores de podcast. Eu conheço algum podcast novo e começo a ouvir todos. Só que o editor não publica todos, só os últimos 5 ou 10. Daí tenho vários problemas. Tenho que baixar manualmente o mp3, e colocar no celular ou no meu Ipod. E o celular não entende que é um podcast, então se eu sair do poscast e voltar de novo ele não continua de onde eu tinha parado, e eu tenho que ficar tentando lembrar. E ele não apaga os já ouvidos. Enfim, dor de cabeça. Eu já passei por isso várias vezes, e agora estou passando por isso com o excelente Visão Historica (indicado pelo Juan Lopes). Lá estou eu, de novo, tendo que baixar um a um.

Dessa vez não. No more!

Pensei em criar uma aplicação onde eu pudesse criar um podcast e apontar pra um MP3 já publicado, e deixar meu celular se virar, com meu podcast pessoal. Imaginei que seria um CRUD rápido, coisa simples. Queria hospedar em algum lugar gratuito. Não tive dúvida. Em umas 15 horas eu coloquei o site no ar, já fazendo as coisas básicas. E ficou até bonitinho. E está funcionando, nos cenários mais básicos que testei. A ideia era fazer um tiro rápido, curto, grosso, e até meio sujo. Queria resolver um problema. De qualquer jeito.

Site Recast

Peguei o teclado, criei uma app ASP.NET MVC, criei um website no Azure. Hospedei no github, configurei a publicação automática. Funcionou. De primeira. Lindo.

Fiz um CRUD rápido, usando Azure Tables. A API do Azure Storage mudou toda, então tive que revisar tudo. Mas o backend ainda é todo igual. Então coloquei tudo pra funcionar. O cadastro do feed (o podcast em si) e seus itens, os arquivos mp3.

Aí veio a parte chatinha: expor o xml. O Schema é público, fácil de entender. Mas não queria fazer uma concatenação de strings, queria algo melhor. Tentei com ASP.NET Web API, que já retorna corretamente um tipo serializado em XML. Logo de cara vi que não dava, ficou horrível, o schema brigava com o WEB API. Lembrei de uma tecnologia pouco usada e muito eficiente: XML Literals. Ficou muito fácil escrever o resultado, porque o VB ainda por cima é dinâmico por padrão. O resultado ficou simples e fácil de entender. Bem melhor do que o que eu faria com qualquer tecnologia e C#.

Aí coloquei o Twitter Boostrap pra deixar o site bonito. Isso me tomou algumas horas. Odeio layout. Coloquei via nuget, ficou tudo errado, tirei, coloquei na mão. Arrumei tudo. Deu trabalho.

Ajustei alguns detalhes. Validação, urls, essas coisas. Coloquei um readme. Verifiquei a aplicação em release. Tudo certo. Testei no Zune. Ok. Testei no celular. Ok. Próximo passo: usar e escrever esse post.

A aplicação está no github, quem quiser contribuir, aceito pull requests. O site está em http://recast.azurewebsites.net/.

Experimentem, é bem simples de usar. Não demanda nem autenticação.

Um projetinho open source, feito por uma pessoa, em poucas horas. Nice!

Em tempo: tem muita coisa pra arrumar nesse projeto. Faltam testes, faltam refatoração. Como eu disse, era um projeto rápido, quick and dirty. Se evoluir eu arrumo esses detalhes.

Giovanni Bassi

Arquiteto e desenvolvedor, agilista, escalador, provocador. É fundador e CSA da Lambda3. Programa porque gosta. Acredita que pessoas autogerenciadas funcionam melhor e por acreditar que heterarquia é mais eficiente que hierarquia. Foi reconhecido Microsoft MVP há mais de dez anos, dos mais de vinte que atua no mercado. Já palestrou sobre .NET, Rust, microsserviços, JavaScript, TypeScript, Ruby, Node.js, Frontend e Backend, Agile, etc, no Brasil, e no exterior. Liderou grupos de usuários em assuntos como arquitetura de software, Docker, e .NET.